J'ai configuré Java pour vider les informations de collecte des ordures dans les journaux ( GC détaillé ). Je ne suis pas sûr de la signification des entrées de ramasse-miettes dans les journaux. Un échantillon de ces entrées est publié ci-dessous. J'ai cherché sur Google et je n'ai pas trouvé d'explications solides.
J'ai quelques suppositions raisonnables, mais je cherche des réponses qui fournissent des définitions strictes de ce que signifient les chiffres dans les entrées, appuyées par des sources crédibles. Un +1 automatique à toutes les réponses qui citent la documentation du soleil. Mes questions sont:
- À quoi fait référence PSYoungGen? Je suppose que cela a quelque chose à voir avec la génération précédente (plus jeune?), Mais quoi exactement?
- Quelle est la différence entre le deuxième triplet de nombres et le premier?
- Pourquoi un nom (PSYoungGen) est-il spécifié pour le premier triplet de nombres mais pas pour le second?
- Que signifie chaque nombre (taille de mémoire) dans le triplet. Par exemple, dans 109884K-> 14201K (139904K), est la mémoire avant GC 109884k, puis elle est réduite à 14201K. Comment le troisième chiffre est-il pertinent? Pourquoi aurions-nous besoin d'un deuxième ensemble de chiffres?
8109.128: [GC [PSYoungGen: 109884K-> 14201K (139904K)] 691015K-> 595332K (1119040K), 0,0454530 s]
8112.111: [GC [PSYoungGen: 126649K-> 15528K (142336K)] 707780K-> 605892K (1121472K), 0,0934560 s]
8112.802: [GC [PSYoungGen: 130344K-> 3732K (118592K)] 720708K-> 607895K (1097728K), 0,0682690 s]
la source
Réponses:
La plupart sont expliqués dans le GC Tuning Guide (que vous feriez bien de lire de toute façon).
Je ne sais pas pourquoi il y a un PSYoungGen dans le vôtre; avez-vous changé le ramasse-miettes?
la source
Un exemple de GC complet associé montre également les collecteurs utilisés pour les générations anciennes et permanentes:
Enfin, décomposez une ligne de votre exemple de sortie de journal:
la source
Je voulais juste mentionner que l'on peut obtenir le journal GC détaillé avec le
paramètre. Ensuite, vous voyez la sortie PSYoungGen ou PSPermGen comme dans la réponse.
-Xloggc:gc.log
Semble également générer la même sortie que-verbose:gc
mais vous pouvez spécifier un fichier de sortie dans le premier.Exemple d'utilisation:
Pour mieux visualiser les données, vous pouvez essayer gcviewer (une version plus récente est disponible sur github ).
Veillez à bien écrire les paramètres, j'ai oublié le "+" et mon JBoss ne démarre pas, sans aucun message d'erreur!
la source
-XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<some number of files> -XX:GCLogFileSize=<some size> -XX:+PrintTenuringDistribution