Reputation: 31
Our server application seems to behave correctly for some time, but after a while the survivor space fills up to 100% and from then on the heap usage grows, the GC cycles (both minor and major) are becoming more and more frequent and eventually the heap depletes.
Here is a part of 'jstat -gcutil < pid > 1000' output:
S0 S1 E O P YGC YGCT FGC FGCT GCT
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 0.00 99.17 48.34 59.93 7014 11777.197 345 554.945 12332.143
100.00 6.02 100.00 48.55 59.93 7015 11777.197 345 554.945 12332.143
0.00 100.00 1.30 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 10.74 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 19.16 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 27.72 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 37.43 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 45.76 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 55.35 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 63.05 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 72.27 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 81.21 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 90.46 50.43 59.93 7015 11778.699 345 554.945 12333.644
0.00 100.00 100.00 50.43 59.93 7016 11778.699 345 554.945 12333.644
80.16 100.00 100.00 50.53 59.93 7016 11778.699 345 554.945 12333.644
100.00 0.00 5.96 51.79 59.93 7016 11780.080 345 554.945 12335.026
100.00 0.00 7.73 51.79 59.93 7016 11780.080 345 554.945 12335.026
100.00 0.00 7.73 51.79 59.93 7016 11780.080 345 554.945 12335.026
100.00 0.00 7.73 51.79 59.93 7016 11780.080 345 554.945 12335.026
My question is what is the main reason behind this kind of application behavior? Is it too small young space or heap, some other JVM parameter, or just a plain old memory leak?
What would be the best strategy to solve this problem, GC tuning, or application refactoring?
JDK 1.6, HP-UX, Xmx/Xms 1G, Xmn 264M, +UseConcMarkSweepGC, +UseParNewGC
Many thanks
Upvotes: 3
Views: 3790
Reputation: 161
Plain old memory leak, i would search if any library you use already leaks first.
Is there any batch job being activated ?
Upvotes: 1