-
Enhancement
-
Resolution: Unresolved
-
P4
-
None
G1 heap sizing is mostly based on gctimeratio, i.e. the cpu usage of gc effort and the application.
In case the cpu usage is too high, G1 expands the heap with the expected effect of doing less garbage collections.
However, the (young) garbage collection frequency is limited by pause time goal and other circumstances. So increasing the heap might not yield any gain; in this case G1 would likely increase the heap until maximum size, kind of wasting memory.
Some reasons why (young) garbage collection frequency might be limited:
* pause time goal (i.e. the heap/work to be done is so large that young gen will not follow the increase in heap size)
* some applications just do not improve after reaching some particular heap size (e.g. dacapo h2); i.e. after having reached a certain level of heap usage, increasing heap size does not help any more
Maybe there is a way to detect such cases (bound by pause time goal, maximum young gen size), so that heap is not increased unnecessarily.
Note that increasing the heap/old gen will reduce the old gen collection frequency, but if that isn't significant in the first place (young gc is dominant by far), then increasing the heap is still unnecessary.
In case the cpu usage is too high, G1 expands the heap with the expected effect of doing less garbage collections.
However, the (young) garbage collection frequency is limited by pause time goal and other circumstances. So increasing the heap might not yield any gain; in this case G1 would likely increase the heap until maximum size, kind of wasting memory.
Some reasons why (young) garbage collection frequency might be limited:
* pause time goal (i.e. the heap/work to be done is so large that young gen will not follow the increase in heap size)
* some applications just do not improve after reaching some particular heap size (e.g. dacapo h2); i.e. after having reached a certain level of heap usage, increasing heap size does not help any more
Maybe there is a way to detect such cases (bound by pause time goal, maximum young gen size), so that heap is not increased unnecessarily.
Note that increasing the heap/old gen will reduce the old gen collection frequency, but if that isn't significant in the first place (young gc is dominant by far), then increasing the heap is still unnecessary.