我目前正在研究最新Java 8版本的G1 GC。
我在“庞大的分配”方面遇到了问题,所以我想知道我的区域大小。
我如何找出设定的区域大小?
我如何自己计算区域大小?
谢谢
Ron*_*lds 11
Java-8中的G1区域大小基于1 startingHeapSize/2048到32 MB之间的整数,并向下舍入为2的第一幂;不支持区域大小<1MB或> 32MB。
您还可以通过设置区域大小-XX:G1HeapRegionSize=n(请注意,该值具有相同的2的幂/范围限制)。
因此,实际上JVM似乎偏向于2048和4095之间的区域计数(假设堆介于2GB和128GB之间)。
通常,这些是每个堆大小范围的区域大小:
<4GB - 1MB
<8GB - 2MB
<16GB - 4MB
<32GB - 8MB
<64GB - 16MB
64GB+ - 32MB
Run Code Online (Sandbox Code Playgroud)
请注意,MB实际上是MiB,GB实际上是GiB