L'optimisation de Xms/Xmx/XX:MaxPermSize dans la JVM
Quelles sont les étapes nécessaires à l'obtention d'une valeur optimisée de Xms/Xmx/XX:MaxPermSize
?
Certainement, je peux mettre une grande valeur, mais comme vous le savez GC prendre le temps de mémoire de grande capacité. Quelles sont les recommandation générale quand je peut épargner le temps de tester et de trouver ces valeur?
Par exemple, est la suivante chiffres de l'aide?
Eden Space heap usage - 42MB / 62MB (used / committed)
Survivor Space heap usage - 8.5MB / 8.5MB (used / committed)
CMS Old Gen heap usage - 100MB / 217MB (used / committed)
Non-heap memory pool usage - 36MB
Voir curiousmentality.co.royaume-uni/2011/11/tuning-jvm-mémoire-paramètres de l' pour certaines infos pratiques
Voir aussi la GC tuning question: stackoverflow.com/q/6871213/772000
Voir aussi la GC tuning question: stackoverflow.com/q/6871213/772000
OriginalL'auteur Ryan | 2013-01-09
Vous devez vous connecter pour publier un commentaire.
La règle générale est que vous ne devez pas modifier les paramètres de la mémoire de la JVM avant d'avoir découvert un problème qui doivent être résolus. La JVM fait un assez bon travail dans le réglage de la plupart des paramètres lors de l'exécution en fonction de votre application.
Si vous avez découvert un besoin d'optimiser les paramètres de mémoire cela dépend de ce que vous avez besoin pour optimiser. Les paramètres que vous devrait varier considérablement selon l'aspect que vous devez optimiser (par exemple les paramètres pour minimiser les pauses sont très différents paramètres qui maximisent le débit).
Si vous avez vraiment besoin pour optimiser, veuillez fournir plus d'informations sur quel aspect vous avez besoin pour optimiser.
OriginalL'auteur K Erlandsson
Lors du réglage de GC, vous avez besoin de collecter le GC statistiques sur une longue période de temps et ensuite d'agir sur ce point. Juste un instantané de la Génération de la taille n'est pas assez.
Vous devez:
Permettre la Pleine GC journalisation. Léger mais puissant.
-XX:+PrintTenuringDistribution -XX:+UnlockDiagnosticVMOptions -XX:+LogVMOutput -XX:LogFile=jvm.log -XX:+HeapDumpOnOutOfMemoryError -Xloggc:gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -showversion
Envisager d'autres moyens de recueillir des informations sur votre GC. La journalisation est bien, mais il y a parfois léger outils de ligne de commande qui va vous donner encore plus de perspicacité. Par exemple.
jstat
pour Hotspot qui vous montrera l'occupation/la capacité de l'Eden, et Survivant de l'Ancien Général.De calcul:
Une fois que vous avez ces données, vous pouvez commencer le dimensionnement des Générations et encore de surveiller l'impact des changements que vous faites. Le d'habitude les recommandations de dimensionnement pour ce qui est du débit:
En général, les recommandations de dimensionnement dépendent de l'objectif de votre réglage:
Voir aussi la table de paramétrage question: Est-il un livre de cuisine guide pour GC problèmes?
OriginalL'auteur Aleš
Ih les rares cas où j'ai besoin d'ajuster ces valeurs, il y a un programme appelé JavaVisualVM qui est inclus dans le jdk (dossier bin je pense) que je trouve très utile. Vous pouvez vous connecter à votre vm et d'analyser l'ensemble de ses paramètres d'exécution.
En vertu de la "plugins" de l'article, vous pouvez également trouver un plugin très utile pour la surveillance de la gc, où vous pouvez voir exactement ce qui se passe là-bas.
OriginalL'auteur Chris