2010-05-28 21 views
3

J'ai un service web en Java, contenu dans Jetty. J'utilise le Java 6 de Sun avec le ParallelGC par défaut, et les options de ligne de commande suivantes sont activées: "-verbose: gc -XX: + PrintGCTimeStamps --XX: + PrintGCDetails".raisons pour lesquelles GcTimeLimit pourrait ne pas avoir d'erreur?

Quand mon processus de mémoire, je vois loglines comme ça, dos à dos:

 
66872.846: [Full GC [PSYoungGen: 932534K->930686K(1865088K)] [PSOldGen: 5595037K->5595024K(5595136K)] 6527571K->6525710K(7460224K) [PSPermGen: 16488K->16487K(21504K)], 12.2488150 secs] [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->16487K(21504K)], 9.6745600 secs] [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->16487K(21504K)], 11.8445420 secs] [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->16487K(21504K)], 9.6006950 secs] [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->16487K(21504K)], 9.6498320 secs] [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->16487K(21504K)], 6.8990990 secs] [Times: user=6.90 sys=0.00, real=6.90 secs] 

Les cinq premières lignes semblent montrer le garbage collector complètement échoué à faire des progrès. Selon ma compréhension de la JVM, ceci devrait aboutir à une OutOfMemoryError, mais je ne vois rien de tel dans les logs. Est-il possible que quelque chose (au niveau de la JVM) les empêche d'être projetés? Ou peut-être soit Jetty ou mon application les supprime?

Merci pour votre conseils!

+0

une observation - l'espace PermSpace semble assez petit à 21 Mo et ne recueille pas du tout. serait préférable de courir avec 128 ou 256? – JoseK

Répondre

1

Essayez de définir explicitement l'option ou définissez -XX: GCHeapFreeLimit à la place. La documentation de ces options est assez fine et peut ne pas refléter exactement le comportement de la machine virtuelle Java que vous exécutez. (Ou peut-être que les valeurs par défaut des options pertinentes ont changé.)