首页 » 互联网 » java full gc激发的问题_对象_是在

java full gc激发的问题_对象_是在

少女玫瑰心 2024-11-14 03:11:27 0

扫一扫用手机浏览

文章目录 [+]

这里先讲一下java的分代回收,效果图如下:

1.绝大多数刚创建的工具会被分配在Eden区,个中的大多数工具很快就会消亡。
当Eden区满的时候,实行Minor GC,将消亡的工具

java full gc激发的问题_对象_是在 java full gc激发的问题_对象_是在 互联网

清理掉,并将剩余的工具复制到一个存活区Survivor0(此时,Survivor1是空缺的,两个Survivor总有一个是空缺的;此后,每次Eden

java full gc激发的问题_对象_是在 java full gc激发的问题_对象_是在 互联网
(图片来自网络侵删)

区满了,就实行一次Minor GC,并将剩余的工具都添加到Survivor0;当Survivor0也满的时候,将个中仍旧活着的工具直接复制到

Survivor1,往后Eden区实行Minor GC后,就将剩余的工具添加Survivor1(此时,Survivor0是空缺的)。

2.在年轻代中经历了N次回收后仍旧没有被打消的工具,会被放到年迈代中,在老年代内存被占满时触发Full GC,回收全体堆内存。

3.持久代:用于存放静态文件,比如java类、方法等。
持久代对垃圾回收没有显著的影响。

每次 Minor GC 会清理年轻代的内存

Major GC 是清理老年代,searchhub用的cms gc,过程包括:

•初始标记(STW initial mark)----- Stop The Word

•并发标记(Concurrent marking)

•并发预清理(Concurrent precleaning)

•重新标记(STW remark)----- Stop The Word

•并发清理(Concurrent sweeping)

•并发重置(Concurrent reset)

Full GC 是清理全体堆空间—包括年轻代和老年代。

触发最初征象的缘故原由是:java模块在cms gc的时候涌现了promotion failed,导致java模块终止程序了30s

总结:CMS GC时涌现promotion failed和concurrent mode failure

对付采取CMS进行旧生代GC的程序而言,尤其要把稳GC日志中是否有promotion failed和concurrent mode failure两种状况,

当这两种状况涌现时可能会触发Full GC。

promotion failed是在进行Minor GC时,survivor space放不下、工具只能放入旧生代,而此时旧生代也放不下造成的;

concurrent mode failure是在实行CMS GC的过程中同时有工具要放入旧生代,而此时旧生代空间不敷造成的

相关文章