小李的便利店

悠优酸幽

JVM知识点(二)——垃圾回收机制

自动垃圾收集

自动垃圾收集是查看堆内存,识别正在使用哪些对象以及哪些对象未被删除以及删除未使用对象的过程。

使用中的对象或引用的对象意味着程序的某些部分仍然维护指向该对象的指针。

程序的任何部分都不再引用未使用的对象或未引用的对象,因此可以回收引用对象使用的内存。

如何确定内存需要被回收

该过程的第一步称为标记。这是垃圾收集器识别哪些内存正在使用而哪些不在使用的地方。

《JVM知识点(二)——垃圾回收机制》

可达性分析算法

简单来说,将对象及其引用关系看作一个图,选定活动的对象作为GC Roots;

然后跟踪引用链条,如果一个对象和GC Roots之间不可达,也就是不存在引用,那么即可认为是可回收对象。

《JVM知识点(二)——垃圾回收机制》

引用类型和可达性级别

《JVM知识点(二)——垃圾回收机制》

垃圾收集算法

标记-清除(Mark-Sweep)算法:首先标识出所有要回收的对象,然后进行清除。

标记、清除过程效率有限,有内存碎片化问题,不适合特别大的堆;收集算法基于标记-清除的思路进行改进。

复制(Copying)算法:划分两块同等大小的区域,收集时将活着的对象复制到另一块区域。

拷贝过程中将对象顺序放置,就可以避免内存碎片化。复制+预留内存,有一定的浪费。

标记-整理(Mark-Compact):类似于标记-清除,但为了避免内存碎片化,它会在清理过程中将对象移动,以确保移动后的对象占用连续的内存空间

分代收集

根据对象的存活周期,将内存划分为几个区域,不同区域采用合适的垃圾收集算法。

新对象会分配到Eden,如果超过-xx:+PretenureSizeThreshold:设置大对象直接进入老年代的阈值。

《JVM知识点(二)——垃圾回收机制》

垃圾收集器

《JVM知识点(二)——垃圾回收机制》
《JVM知识点(二)——垃圾回收机制》
《JVM知识点(二)——垃圾回收机制》
《JVM知识点(二)——垃圾回收机制》
《JVM知识点(二)——垃圾回收机制》

垃圾收集器组合

《JVM知识点(二)——垃圾回收机制》
点赞

发表评论

电子邮件地址不会被公开。