栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JVM垃圾回收

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JVM垃圾回收

  • 哪些内存需要回收?
  • 什么时候回收?
  • 如何回收?
一、基本概念 1. 垃圾
  • 在运行程序中,没有任何指针指向的对象,就是需要被回收的垃圾
  • 如果不及时对内存中的垃圾进行清理,那么就会一直占用内存空间,被保留的空间无法被其他对象使用,就会导致内存溢出
2. 垃圾回收的意义
  • 如果不进行垃圾回收,内存迟早都会被消耗完毕
  • 除了释放没用的对象,垃圾回收也可以清理内存中的记录碎片。碎片整理将所占用的堆内存移到堆的另一端,以便JVM将整理出的内存分配给新的对象
  • 业务的逐渐复杂,没有GC就不能保证应用程序的正常进行。同时经常的STW,又会影响实际的需求,所以需要不断的对GC进行优化
3. 垃圾回收
  • 内存泄漏:某个对象已经没用了,但是还无法回收掉
4. JAVA垃圾回收
  • 自动内存管理,无需开发人员手动进行内存的分配和回收,降低内存泄漏和内存溢出的风险
  • 自动内存管理,开发人员可以专注于业务开发
1. 自动内存管理是黑匣子,开发人员必须了解,以便出现内存溢出时定位问题和解决问题
二、垃圾回收算法
  • 哪些是垃圾?标记算法
  • 怎么清除?清除算法
三、垃圾标记阶段
  • 堆里存放着几乎所有的Java对象实例,在GC执行之前,首先需要区分出内存中哪些是存活对象,哪些是已死亡对象
  • 只有被标记死亡的对象,GC才会在执行时,释放掉其所占用的内存空间
  • 当一个对象已经不再被任何的存活对象继续引用时,可以判断为已经死亡
  • 包含引用计数算法和可达性分析算法
1. 引用计数算法
  • Reference Counting
1. 每个对象保存一个人整型的引用计数器属性,用于记录对象被引用的情况
   1.1  对于一个对象A,只要有任何一个对象引用了A, 则A的引用计数器加1
   1.2  当引用失效时,引用计数器减1
   1.3  对象A的引用计数器的值为0,则表示对象A不可能再被使用,就可以回收

2. 优点: 实现简单,垃圾对象方便辨识,判定效率高,回收没有延迟

3. 缺点:
    3.1 需要单独的字段存储计数器,增加   存储空间的开销
    3.2 每次赋值需要更新计数器,伴随着加法和减法,增加了  时间开销
    3.3 致命缺陷: 无法处理循环引用的问题,  最终java的垃圾回收器中没有使用该算法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/856765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号