Java GC日志问题,哪种说法正确

答案:Eden+From space
(Note: 考虑space resizing,From space跟To space在某些时刻size可能会不一样)
【Java GC日志问题,哪种说法正确】 具体请看code。
1. ParNewGeneration类继承自DefNewGeneration类
http://hg.openjdk.java.net/jdk9/hs-gc/hotspot/file/41e47efcd333/src/share/vm/gc/cms/parNewGeneration.hpp
ctrl+f 到 “class ParNewGeneration: public DefNewGeneration”
2. DefNewGeneration::capacity() 的实现
http://hg.openjdk.java.net/jdk9/hs-gc/hotspot/file/41e47efcd333/src/share/vm/gc/serial/defNewGeneration.cpp
ctrl+f 到 “size_t DefNewGeneration::capacity()”
size_t DefNewGeneration::capacity() const { return eden()-\u0026gt;capacity() + from()-\u0026gt;capacity(); // to() is only used during scavenge}

■网友
自己来回答下这个问题吧。通过jmap可以获取java进程的堆信息,如下图:Java GC日志问题,哪种说法正确

图1中NewSize=10MB,SurvivorRatio=8,那么一个Survivor的大小为1MBJava GC日志问题,哪种说法正确

图2是跟图1对应的GC日志A处大小为9M,B处大小为29MB,因此问题中红线部分的大小应该是Eden+一块正在被占用的Survivor的和。


    推荐阅读