<div dir="ltr">I am trying to estimate the free memory using metrics from MemoryPoolMxBean.getCollectionUsage().<br><br><div>I am observing following behavior with G1GC<br><br>iteration=    0 - G1 Old Gen: u=  0% cu=  0% uth=75% cuth=75%<br>iteration=  100 - G1 Old Gen: u=  0% cu=  0% uth=75% cuth=75%<br>iteration=  200 - G1 Old Gen: u=  0% cu=  0% uth=75% cuth=75%<br>iteration=  300 - G1 Old Gen: u=  0% cu=  0% uth=75% cuth=75%<br>iteration=  400 - G1 Old Gen: u=  0% cu=  0% uth=75% cuth=75%<br>iteration=  500 - G1 Old Gen: u=  1% cu=  0% uth=75% cuth=75%<br>iteration=  600 - G1 Old Gen: u=  4% cu=  0% uth=75% cuth=75%<br>iteration=  700 - G1 Old Gen: u=  9% cu=  0% uth=75% cuth=75%<br>iteration=  800 - G1 Old Gen: u= 16% cu=  0% uth=75% cuth=75%<br>iteration=  900 - G1 Old Gen: u= 25% cu=  0% uth=75% cuth=75%<br>iteration= 1000 - G1 Old Gen: u= 34% cu=  0% uth=75% cuth=75%<br>iteration= 1100 - G1 Old Gen: u= 45% cu=  0% uth=75% cuth=75%<br>iteration= 1200 - G1 Old Gen: u= 38% cu=  0% uth=75% cuth=75%<br>iteration= 1300 - G1 Old Gen: u= 46% cu=  0% uth=75% cuth=75%<br>iteration= 1400 - G1 Old Gen: u= 52% cu=  0% uth=75% cuth=75%<br>iteration= 1500 - G1 Old Gen: u= 45% cu=  0% uth=75% cuth=75%<br>iteration= 1600 - G1 Old Gen: u= 67% cu=  0% uth=75% cuth=75%<br>iteration= 1700 - G1 Old Gen: u= 56% cu=  0% uth=75% cuth=75%<br>iteration= 1800 - G1 Old Gen: u= 55% cu=  0% uth=75% cuth=75%<br>iteration= 1900 - G1 Old Gen: u= 61% cu=  0% uth=75% cuth=75%<br>iteration= 2000 - G1 Old Gen: u= 56% cu=  0% uth=75% cuth=75%<br>iteration= 2100 - G1 Old Gen: u= 76% cu=  0% uth=75% cuth=75%<br>iteration= 2200 - G1 Old Gen: u= 65% cu=  0% uth=75% cuth=75%<br>iteration= 2300 - G1 Old Gen: u= 62% cu=  0% uth=75% cuth=75%<br>iteration= 2400 - G1 Old Gen: u= 75% cu=  0% uth=75% cuth=75%<br>iteration= 2500 - G1 Old Gen: u= 75% cu=  0% uth=75% cuth=75%<br>iteration= 2600 - G1 Old Gen: u= 72% cu=  0% uth=75% cuth=75%<br>iteration= 2700 - G1 Old Gen: u= 69% cu=  0% uth=75% cuth=75%<br>iteration= 2800 - G1 Old Gen: u= 74% cu=  0% uth=75% cuth=75%<br>iteration= 2900 - G1 Old Gen: u= 80% cu=  0% uth=75% cuth=75%<br>iteration= 3000 - G1 Old Gen: u= 83% cu=  0% uth=75% cuth=75%<br><b>iteration= 3100 - G1 Old Gen: u= 89% cu=  0% uth=75% cuth=75%<br>iteration= 3200 - G1 Old Gen: u= 71% cu= 59% uth=75% cuth=75%</b><br>iteration= 3300 - G1 Old Gen: u= 90% cu= 59% uth=75% cuth=75%<br>iteration= 3400 - G1 Old Gen: u= 76% cu= 62% uth=75% cuth=75%<br>iteration= 3500 - G1 Old Gen: u= 65% cu= 65% uth=75% cuth=75%<div><br></div><div><br></div><div>CMS GC </div><div><br></div><div><div>iteration=    0 - CMS Old Gen: u=  0% cu=  0% uth=75% cuth=75%</div><div>iteration=  100 - CMS Old Gen: u=  0% cu=  0% uth=75% cuth=75%</div><div>iteration=  200 - CMS Old Gen: u=  1% cu=  0% uth=75% cuth=75%</div><div>iteration=  300 - CMS Old Gen: u=  3% cu=  0% uth=75% cuth=75%</div><div>iteration=  400 - CMS Old Gen: u= 12% cu=  0% uth=75% cuth=75%</div><div>iteration=  500 - CMS Old Gen: u= 19% cu=  0% uth=75% cuth=75%</div><div>iteration=  600 - CMS Old Gen: u= 34% cu=  0% uth=75% cuth=75%</div><div>iteration=  700 - CMS Old Gen: u= 43% cu=  0% uth=75% cuth=75%</div><div><b>iteration=  800 - CMS Old Gen: u= 63% cu=  0% uth=75% cuth=75%</b></div><div><b>iteration=  900 - CMS Old Gen: u= 48% cu= 37% uth=75% cuth=75%</b></div><div><b>iteration= 1000 - CMS Old Gen: u= 60% cu= 37% uth=75% cuth=75%</b></div><div>iteration= 1100 - CMS Old Gen: u= 58% cu= 45% uth=75% cuth=75%</div><div>iteration= 1200 - CMS Old Gen: u= 71% cu= 45% uth=75% cuth=75%</div><div>iteration= 1300 - CMS Old Gen: u= 66% cu= 53% uth=75% cuth=75%</div><div>iteration= 1400 - CMS Old Gen: u= 80% cu= 53% uth=75% cuth=75%</div></div></div><div><br></div><div>u = usage(getUsage), cu = collectionUsage (getCollectionUsage), uth = usage threshold %, cuth = collection usage threshold %</div><div>my program just keeps allocating string and frees some strings.</div><div><br></div><div>1. Why does G1GC doesn't update it's collection usage till 59% whereas in CMSGC it is updated at 37% itself?</div><div><br></div><div>Can someone shed more light on this?</div><div><br></div><div>Thanks,</div><div>Sundar</div></div>