2015-04-16 5 views
1

Utilisation de XX: + PrintGCApplicationStoppedTime -XX: + PrintGCApplicationConcurrentTime dans mon journal gc!Analyse sur les journaux gc

Mais trouvé que seulement après 4 0r 5 impressions de PrintGCApplicationStoppedTime mes détails réels de journaux gc imprimés par -XX: + commande PrintGCDetails!

Par définition l'application imprime PrintGCApplicationStoppedTime arrêté le temps pour chaque gc

Mais Iam ne sait pas pourquoi elle imprime comme dans l'exemple ci-dessous

Est-ce parce

PrintGCApplicationStoppedTime imprime juste après chaque point sûr atteindre

(ou)

le fichier journal sera logge d par différents threads gc! Im en utilisant balayage simultané pour GC complet et ParNew pour la jeune génération

Mon application est une application web!

O/p Motif-Im obtenir comme ça!

Application time: 0.3847031 seconds 
Total time for which application threads were stopped: 0.3135419 seconds 
Application time: 0.1520723 seconds 
Total time for which application threads were stopped: 0.1993920 seconds 
Application time: 0.1188219 seconds 
Total time for which application threads were stopped: 0.1993920 seconds 
Application time: 0.1188219 seconds 
Total time for which application threads were stopped: 0.1993920 seconds 
Application time: 0.1188219 seconds 
Total time for which application threads were stopped: 0.1993920 seconds 
Application time: 0.1188219 seconds 
1.229: [GC 1.229: [ParNew: 256000K->51200K(256000K), 0.1509756 secs] 426536K->334728K(997376K), 0.1510198 secs] [Times: user=0.85 sys=0.07, real=0.15 secs] 

Répondre

5

Malheureusement, PrintGCApplicationStoppedTime est un nom trompeur pour cette option JVM.

En fait, il imprime le temps passé à l'intérieur de safepoints. pauses SafePoint se produisent non seulement en raison de la collecte des ordures, mais pour beaucoup d'autres raisons:

  • Deoptimization
  • révocation de verrouillage Biased
  • fil décharge
  • inspection Heap
  • classe redéfinition
  • etc. (see the list)

Safepoints peut se produire périodiquement même sans une opération VM demandée afin de dégonfler les moniteurs inactifs, effectuer certains nettoyages JIT et ainsi de suite. Voir -XX:GuaranteedSafepointInterval Option VM (1000 millisecondes par défaut).

Utilisez -XX:+PrintSafepointStatistics -XX:PrintSafepointStatisticsCount=1 pour afficher plus d'informations sur les points de suspension.