Output may look like this:
[GC (Allocation Failure) 243779K->175288K(253440K), 0.0232570 secs]
[GC (Allocation Failure) , 0.0831990 secs]
[Full GC (Allocation Failure) 253440K->118630K(253440K), 0.2981190 secs]
The second GC got a promotion failure and did not print the heap change information.
This is due to the DefNew code not printing the size information when a promotion failure occurs.
In DefNewGeneration::collect() we have this code:
if (!_promotion_failed) {
...
gch->print_heap_change(gch_prev_used);
...
} else {
...
}
Impact=Low, just a logging issue
Likelihood=Medium, will happen for every promotion failure with DefNew if logging is enabled
Workaround=Low, Can get the information from PrintHeapAtGC
ILW=LML -> P5
[GC (Allocation Failure) 243779K->175288K(253440K), 0.0232570 secs]
[GC (Allocation Failure) , 0.0831990 secs]
[Full GC (Allocation Failure) 253440K->118630K(253440K), 0.2981190 secs]
The second GC got a promotion failure and did not print the heap change information.
This is due to the DefNew code not printing the size information when a promotion failure occurs.
In DefNewGeneration::collect() we have this code:
if (!_promotion_failed) {
...
gch->print_heap_change(gch_prev_used);
...
} else {
...
}
Impact=Low, just a logging issue
Likelihood=Medium, will happen for every promotion failure with DefNew if logging is enabled
Workaround=Low, Can get the information from PrintHeapAtGC
ILW=LML -> P5