Why is G1GC collection usage threshold not updated early?
Sundara Mohan M
email.sundarms at gmail.com
Wed Jun 28 18:54:36 UTC 2017
I am trying to estimate the free memory using metrics from
MemoryPoolMxBean.getCollectionUsage().
I am observing following behavior with G1GC
iteration= 0 - G1 Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 100 - G1 Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 200 - G1 Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 300 - G1 Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 400 - G1 Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 500 - G1 Old Gen: u= 1% cu= 0% uth=75% cuth=75%
iteration= 600 - G1 Old Gen: u= 4% cu= 0% uth=75% cuth=75%
iteration= 700 - G1 Old Gen: u= 9% cu= 0% uth=75% cuth=75%
iteration= 800 - G1 Old Gen: u= 16% cu= 0% uth=75% cuth=75%
iteration= 900 - G1 Old Gen: u= 25% cu= 0% uth=75% cuth=75%
iteration= 1000 - G1 Old Gen: u= 34% cu= 0% uth=75% cuth=75%
iteration= 1100 - G1 Old Gen: u= 45% cu= 0% uth=75% cuth=75%
iteration= 1200 - G1 Old Gen: u= 38% cu= 0% uth=75% cuth=75%
iteration= 1300 - G1 Old Gen: u= 46% cu= 0% uth=75% cuth=75%
iteration= 1400 - G1 Old Gen: u= 52% cu= 0% uth=75% cuth=75%
iteration= 1500 - G1 Old Gen: u= 45% cu= 0% uth=75% cuth=75%
iteration= 1600 - G1 Old Gen: u= 67% cu= 0% uth=75% cuth=75%
iteration= 1700 - G1 Old Gen: u= 56% cu= 0% uth=75% cuth=75%
iteration= 1800 - G1 Old Gen: u= 55% cu= 0% uth=75% cuth=75%
iteration= 1900 - G1 Old Gen: u= 61% cu= 0% uth=75% cuth=75%
iteration= 2000 - G1 Old Gen: u= 56% cu= 0% uth=75% cuth=75%
iteration= 2100 - G1 Old Gen: u= 76% cu= 0% uth=75% cuth=75%
iteration= 2200 - G1 Old Gen: u= 65% cu= 0% uth=75% cuth=75%
iteration= 2300 - G1 Old Gen: u= 62% cu= 0% uth=75% cuth=75%
iteration= 2400 - G1 Old Gen: u= 75% cu= 0% uth=75% cuth=75%
iteration= 2500 - G1 Old Gen: u= 75% cu= 0% uth=75% cuth=75%
iteration= 2600 - G1 Old Gen: u= 72% cu= 0% uth=75% cuth=75%
iteration= 2700 - G1 Old Gen: u= 69% cu= 0% uth=75% cuth=75%
iteration= 2800 - G1 Old Gen: u= 74% cu= 0% uth=75% cuth=75%
iteration= 2900 - G1 Old Gen: u= 80% cu= 0% uth=75% cuth=75%
iteration= 3000 - G1 Old Gen: u= 83% cu= 0% uth=75% cuth=75%
*iteration= 3100 - G1 Old Gen: u= 89% cu= 0% uth=75% cuth=75%iteration=
3200 - G1 Old Gen: u= 71% cu= 59% uth=75% cuth=75%*
iteration= 3300 - G1 Old Gen: u= 90% cu= 59% uth=75% cuth=75%
iteration= 3400 - G1 Old Gen: u= 76% cu= 62% uth=75% cuth=75%
iteration= 3500 - G1 Old Gen: u= 65% cu= 65% uth=75% cuth=75%
CMS GC
iteration= 0 - CMS Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 100 - CMS Old Gen: u= 0% cu= 0% uth=75% cuth=75%
iteration= 200 - CMS Old Gen: u= 1% cu= 0% uth=75% cuth=75%
iteration= 300 - CMS Old Gen: u= 3% cu= 0% uth=75% cuth=75%
iteration= 400 - CMS Old Gen: u= 12% cu= 0% uth=75% cuth=75%
iteration= 500 - CMS Old Gen: u= 19% cu= 0% uth=75% cuth=75%
iteration= 600 - CMS Old Gen: u= 34% cu= 0% uth=75% cuth=75%
iteration= 700 - CMS Old Gen: u= 43% cu= 0% uth=75% cuth=75%
*iteration= 800 - CMS Old Gen: u= 63% cu= 0% uth=75% cuth=75%*
*iteration= 900 - CMS Old Gen: u= 48% cu= 37% uth=75% cuth=75%*
*iteration= 1000 - CMS Old Gen: u= 60% cu= 37% uth=75% cuth=75%*
iteration= 1100 - CMS Old Gen: u= 58% cu= 45% uth=75% cuth=75%
iteration= 1200 - CMS Old Gen: u= 71% cu= 45% uth=75% cuth=75%
iteration= 1300 - CMS Old Gen: u= 66% cu= 53% uth=75% cuth=75%
iteration= 1400 - CMS Old Gen: u= 80% cu= 53% uth=75% cuth=75%
u = usage(getUsage), cu = collectionUsage (getCollectionUsage), uth = usage
threshold %, cuth = collection usage threshold %
my program just keeps allocating string and frees some strings.
1. Why does G1GC doesn't update it's collection usage till 59% whereas in
CMSGC it is updated at 37% itself?
Can someone shed more light on this?
Thanks,
Sundar
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20170628/8ffd4033/attachment.htm>
More information about the hotspot-gc-dev
mailing list