G1 GC 是否有最大区域大小或最大区域数量?
Does G1 GC have a max size of region or max amount of region?
学习G1 GC时,发现了这篇文章:http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html。在那篇文章中,有如下内容:
The G1 GC is a regionalized and generational garbage collector, which means that the Java object heap (heap) is divided into a number of equally sized regions. Upon startup, the Java Virtual Machine (JVM) sets the region size. The region sizes can vary from 1 MB to 32 MB depending on the heap size. The goal is to have no more than 2048 regions.
这是否意味着G1 GC可以处理的最大java堆内存大小为2048 * 32M,如果大小超过,会发生什么情况?
// Minimum region size; we won't go lower than that.
// We might want to decrease this in the future, to deal with small
// heaps a bit more efficiently.
static const size_t MIN_REGION_SIZE = 1024 * 1024;
// Maximum region size; we don't go higher than that. There's a good
// reason for having an upper bound. We don't want regions to get too
// large, otherwise cleanup's effectiveness would decrease as there
// will be fewer opportunities to find totally empty regions after
// marking.
static const size_t MAX_REGION_SIZE = 32 * 1024 * 1024;
// The automatic region size calculation will try to have around this
// many regions in the heap (based on the min heap size).
static const size_t TARGET_REGION_NUMBER = 2048;
MIN_REGION_SIZE
(1MB) 和 MAX_REGION_SIZE
(32MB) 是硬限制;
TARGET_REGION_NUMBER
只是一个提示,如果未在 JVM 选项中指定,则用于计算默认区域大小。实际数量可能超过此值。
学习G1 GC时,发现了这篇文章:http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html。在那篇文章中,有如下内容:
The G1 GC is a regionalized and generational garbage collector, which means that the Java object heap (heap) is divided into a number of equally sized regions. Upon startup, the Java Virtual Machine (JVM) sets the region size. The region sizes can vary from 1 MB to 32 MB depending on the heap size. The goal is to have no more than 2048 regions.
这是否意味着G1 GC可以处理的最大java堆内存大小为2048 * 32M,如果大小超过,会发生什么情况?
// Minimum region size; we won't go lower than that.
// We might want to decrease this in the future, to deal with small
// heaps a bit more efficiently.
static const size_t MIN_REGION_SIZE = 1024 * 1024;
// Maximum region size; we don't go higher than that. There's a good
// reason for having an upper bound. We don't want regions to get too
// large, otherwise cleanup's effectiveness would decrease as there
// will be fewer opportunities to find totally empty regions after
// marking.
static const size_t MAX_REGION_SIZE = 32 * 1024 * 1024;
// The automatic region size calculation will try to have around this
// many regions in the heap (based on the min heap size).
static const size_t TARGET_REGION_NUMBER = 2048;
MIN_REGION_SIZE
(1MB) 和MAX_REGION_SIZE
(32MB) 是硬限制;TARGET_REGION_NUMBER
只是一个提示,如果未在 JVM 选项中指定,则用于计算默认区域大小。实际数量可能超过此值。