0
点赞
收藏
分享

微信扫一扫

javaGC笔记

尤克乔乔 2022-01-06 阅读 63
java

判断是否被清理标准是由"GCRoot"来决定的

满足以下三种情况则不会被清理

跟"GCRoot"没有引用关系的会被清除

三种清理算法

GC内存分配大概是这样的

 

每次new对象时会存在 E 区(Eden),当 E 区快满时,会触发YoungGC,并采用复制算法,将不需要删除的对象存入S区(对象"朝生夕死",比例约为1:1:8(默认设置))

每次YoungGC存活的对象年龄+1,知道满6岁后就不会再往S区复制,下次直接进入Old区

官方文档,15是最大值,7是初始值。晋升的岁数是个动态变化的值,在每次gc的时候都会重新计算,这和s区存活率(默认50%)等其他参数有关,可以通过-XX:+PrintTenuringDistribution来查看每次gc的时候确定下来的新的晋升年龄阈值。

 

两个S区交替工作,E区幸存的先存入S0区,再将S和E区全部删除,等下一次E区快满时,将S0和E区所有对象进行打标删除,未打标复制到S1区.S0和S1交替使用,比直接将内存一分为二的利用率高

存储大对象时直接会到Old区,因为Young区来回复制哦比较消耗资源,所以直接存入Old区,当Old区快满时,一般会同时伴随YoungGC,也叫FullGC,会引起Stop the world(暂停服务),服务暂停后整个Java程序停止,权力进行垃圾回收,主要采用 "标记-清理" "标记-整理" 算法.

这种收集器已经过时了,因为新版本采用了全新的G1垃圾收集器

完结!!!

举报

相关推荐

JavaGC垃圾处理

算法笔记的笔记

【学习笔记】Html笔记

笔记笔记3.0

HTML基础笔记笔记

笔记

0 条评论