首先看自己能不能回答出这些问题。
垃圾回收算法
垃圾回收算法前六个是分代算法,G1是逻辑分代,物理不分代,ZGC是逻辑、物理都不分代
堆内存逻辑分区
年轻代使用的是copy算法,效率高。
老年代使用Mark Compact或Mark Sweep
总结
Serial Parallel Scavenge ParNew CMS CMS -从线程角度并发标记:有错标的情况,所以在重新标记那一步解决错标情况。
也会有浮动垃圾,但是无所谓,下次标记会回收
CMS、G1、ZGC的主要区别就在于如何处理错标情况。CMS(增量更新)和G1(快照 ) 采用三色标记,ZGC采用颜色指针。
初始标记:找到根对象
三色标记法
三色标记错标 CMS的解决方案
当A指向D的时候,把A重新标记为灰色,这样在重新标记的时候就可以找到D了
G1的解决方案JPS、jinfo、jstack、10. jmap - histo 4655 | head -20,查找有多少对象产生
什么情况下可以用jmap?
测试环境压测、高可用下线一台机器、tcp copy到测试机、添加XX:+HeapDumpOnOutOfMemoryError
网友评论