user2997423
user2997423

Reputation: 21

I see frequent major gc when there is lot of space in old/young gen

I see frequent major gc when there is lot of space in old/young gen.

Only thing i see is survivor space is 100% full all the time. java vm args are as below

-Xms2200m -Xmx2200m -XX:NewSize=600m -XX:MaxNewSize=600 -XX:SurvivorRatio=3 -XX:PermSize=128m -XX:MaxPermSize=292m -XX:+UseParNewGC -XX:+UseTLAB -XX:+UseConcMarkSweepGC

-XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+PrintTenuringDistribution

Adding the link to gc logs below. please provide any guidance on what should i be looking at.

http://sdrv.ms/1fH9Bm7

Thanks

Upvotes: 2

Views: 374

Answers (1)

Alexey Ragozin
Alexey Ragozin

Reputation: 8379

Survivor space 100% is generally ok (ideally it should be just little below 100%).

These two articles could you basic ideas about mechanics of generational GC and CMS

Getting back to your question.

You have class unloading enabled (XX:+CMSClassUnloadingEnabled) this means following. If PERM gen usage is close to its limit (say 90%), which is perfectly ok for PERM, CMS collection will be started. And if there are no classes to unload, CMS cycle will not free any space in PERM and next CMS collection will be triggers right after.

To put simple, if PERM is filled close to its capacity - concurrent collections will run non stop.

Upvotes: 1

Related Questions