Why can't GcTimeLimit be an error?

I have a Java web service contained in Jetty. I use Sun Java 6 with ParallelGC by default, and I have the following command line options: "-verbose: gc -XX: + PrintGCTimeStamps --XX: + PrintGCDetails".

When my process goes out of memory, I see lines like this, back-to-back:

66872.846: [Full GC [PSYoungGen: 932534K-> 930686K (1865088K)] [PSOldGen: 5595037K-> 5595024K (5595136K)] 6527571K-> 6525710K (7460224K) [PSPermGen: 16488K] 124]> 16488K- 124] Times: user = 12.25 sys = 0.00, real = 12.24 secs] 
66885.098: [Full GC [PSYoungGen: 932608K-> 932608K (1865088K)] [PSOldGen: 5595024K-> 5595024K (5595136K)] 6527632K-> 6527632K (7460224K) [PSPermGen: 16487K] 6004.64] 464], which is 16,407K]; Times: user = 9.66 sys = 0.01, real = 9.67 secs] 
66894.773: [Full GC [PSYoungGen: 932608K-> 932488K (1865088K)] [PSOldGen: 5595024K-> 5595023K (5595136K)] 6527632K-> 6527512K (7460224K) [PSPermGen: 16487K-444444444444444444444444]> 164774-44> 144,44]> 164,74] Times: user = 11.85 sys = 0.00, real = 11.85 secs] 
66906.623: [Full GC [PSYoungGen: 932608K-> 932608K (1865088K)] [PSOldGen: 5595023K-> 5595023K (5595136K)] 6527631K-> 6527631K (7460224K) [PSPermGen: 16487K] 964]> 164750-69.6> 164] 750] 616] Times: user = 9.60 sys = 0.00, real = 9.60 secs] 
66916.224: [Full GC [PSYoungGen: 932608K-> 932488K (1865088K)] [PSOldGen: 5595023K-> 5595023K (5595136K)] 6527631K-> 6527512K (7460224K) [PSPermGen: 16487K- 964]> 164720)] Times: user = 9.65 sys = 0.00, real = 9.65 secs] 
66925.881: [Full GC [PSYoungGen: 932608K-> 0K (1865088K)] [PSOldGen: 5595023K-> 4133351K (5595136K)] 6527631K-> 4133351K (7460224K) [PSPermGen: 16487K-> 16470] (6997K) Times: user = 6.90 sys = 0.00, real = 6.90 secs] 

The first five lines show that the garbage collector was completely unable to make any progress. According to my understanding of the JVM, this should lead to an OutOfMemoryError, but I don't see anything like this in the logs. Is it possible that something (at the JVM level) is stopping them from dropping? Or maybe Jetty or my application suppress them?

Thanks for your advice!

+3
source share
1 answer

Try setting the parameter explicitly or instead of the -XX: GCHeapFreeLimit parameter. The documentation for these parameters is rather thin and may not accurately reflect the behavior of a running JVM. (Or perhaps the default changes for the corresponding parameters have changed.)

+1
source

Source: https://habr.com/ru/post/1747550/


All Articles