Java 7 (JDK 7) collecte des ordures et de la documentation sur G1
Java 7 a été pendant un certain temps maintenant, mais je ne trouve pas de bonnes sources d'informations sur la configuration de la éboueurs, en particulier la nouvelle G1 collecteur.
Mes questions:
- G1 est la valeur par défaut collector de Java 7 et si non, comment puis-je activer G1?
- Ce que les paramètres optionnels ne g1 ont en Java7?
- Qu'il y avait des changements apportés à d'autres collectionneurs comme cms ou la parallèle collecteur dans Java 7?
- Où puis-je trouver de la bonne documentation sur la collecte des ordures dans Java 7?
- prise en main du G1 Garbage Collector donne également un bon aperçu avec les meilleures pratiques.
- oracle.com/technetwork/articles/java/g1gc-1984535.html
Vous devez vous connecter pour publier un commentaire.
Le G1 garbage collector n'est pas la valeur par défaut dans mon installation de Java, version 1.7.0_01. Vous pouvez voir par vous-même en utilisant des options de ligne de commande:
Vous n'avez pas besoin d'activer les options expérimentales à son tour sur le G1 collecteur de plus, si:
Je ne sais pas où vous pouvez trouver une bonne documentation.
-XX:+UseParallelGC
.Oracle enfin G1 officiel dans Java 7 U4:
http://www.oracle.com/technetwork/java/javase/7u4-relnotes-1575007.html
Description:
http://docs.oracle.com/javase/7/docs/technotes/guides/vm/G1.html
Options de ligne de commande:
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#G1Options
Encore, je ne pense pas que c'est la valeur par défaut collector de Java 7. Pour les serveurs par défaut est le Parallèle Collector comme dans Java 6.
Oui, G1 est la nouvelle norme garbage collector de Java 1.7 JVM.
Ici vous pouvez trouver beaucoup d'informations sur la façon d'utiliser et de configre le nouveau garbage collector:
J'ai aussi trouvé cette article très utile pour comprendre les ampoules de G1.
Encore plus d'infos ici.
1. Est G1 par défaut collector de Java 7 (...)
La règle sur ce Java 5 de la page est toujours en vigueur dans Java 7 (et autant que je sache, Java 8):
Mais aussi envisager de:
-client
VM sont donc toujours "de la classe de serveur"Par exemple, si sur x64 de Windows que vous exécutez...
1. (...) comment puis-je activer G1?
De Java 7, il suffit de
-XX:+UseG1GC
. Peut-être aussi de l'intérêt est lorsque vous voulez:2. Quels paramètres facultatifs ne g1 ont en Java7?
Je n'ai pas utilisé G1 moi-même, mais Je rassemble qu'il adhère à la même base "débit /ergonomique" les indicateurs utilisés pour régler l'parallèlement d'autres collectionneurs. Dans mon expérience avec le Parallèle GC,
-XX:GCTimeRatio
a été le pivot, l'un dans la fourniture de la vitesse attendue-de la mémoire compromis. YMMV.G1-options spécifiques sont répertoriés ici
3. Ont été il y a des changements à (...) de la cms ou de la parallèle le collecteur, en Java 7?
Ne sais pas, mais...
4. Où puis-je trouver de la bonne documentation sur la collecte des ordures dans Java 7?
Il peut être une douleur à trouver, ne peut-il pas? Probablement le meilleur "hub" de la page que j'ai trouvé est celui-ci:
http://www.oracle.com/technetwork/java/javase/tech/index-jsp-140228.html
Une lecture nécessaire, mais vaut le temps si vous avez besoin de faire quelques réglages. Particulièrement perspicace est: Garbage Collector Ergonomie
G1 n'est pas par défaut collector de Java 7.
-XX:+UseG1GC
permettra G1GCIl y a beaucoup de. Jetez un oeil à cette oracle article pour obtenir des informations complètes.
Pour cette raison, de personnaliser les paramètres critiques
et laisser tous les autres paramètres à leur valeur par défaut.
Voici une liste des options importantes et leurs valeurs par défaut. Cette liste s'applique à la dernière version de Java HotSpot VM, construire 24. Vous pouvez adapter et d'affiner la G1 GC paramètres de la JVM de la ligne de commande.
Important Par Défaut:
Définit la taille d'un G1 région. La valeur va être une puissance de deux et peut varier de 1 mo à 32 MO. L'objectif est d'avoir autour de 2048 régions basée sur le minimum de Java de la taille du segment.
Fixe une valeur cible souhaitée maximum des temps de pause. La valeur par défaut est de 200 millisecondes. La valeur spécifiée n'est pas de s'adapter à votre taille de segment de mémoire.
Détermine le pourcentage de la masse à utiliser que le minimum pour la jeune génération de la taille. La valeur par défaut est de 5 pour cent de votre tas Java.
Détermine le pourcentage de la taille de segment de mémoire à utiliser le maximum pour les jeunes générations de la taille. La valeur par défaut est de 60 pour cent de votre tas Java.
Définit la valeur de la STW threads de travail. Définit la valeur de n pour le nombre de processeurs logiques. La valeur de n est le même que le nombre de processeurs logiques jusqu'à une valeur de 8.
Si il y a plus de huit processeurs logiques, définit la valeur de n à environ 5/8 de processeurs logiques. Cela fonctionne dans la plupart des cas, sauf pour les grands systèmes SPARC où la valeur de n peut être d'environ 5/16 de processeurs logiques.
Définit le nombre de parallèle le marquage des fils. Ensembles de n à environ 1/4 de la parallèle plusieurs threads de garbage collection (ParallelGCThreads).
Jeux Java tas d'occupation seuil qui déclenche un cycle de marquage. Le défaut d'occupation est de 45 pour cent de l'ensemble du tas Java.
Définit le seuil d'occupation pour un vieux de la région à être inclus dans un mixte de collecte des ordures cycle. La valeur par défaut de l'occupation de 65%
Détermine le pourcentage de tas que vous êtes prêt à perdre. La Java HotSpot VM ne pas lancer le mixte de collecte des ordures cycle lors de la remise en état de pourcentage de moins que le tas de déchets pourcentage
Définit le numéro de la cible mixte de collecte des poubelles après le marquage du cycle de collectionner les vieilles régions avec au plus G1MixedGCLIveThresholdPercent données en direct. La valeur par défaut est 8 mixte des ordures collections
Définit une limite supérieure sur le nombre de vieux régions prélevés au cours d'un mixte de collecte des ordures cycle. La valeur par défaut est de 10 pour cent de la Java heap
Détermine le pourcentage de réserve de la mémoire pour garder libre de façon à réduire le risque d'-espace de débordement. La valeur par défaut est de 10%. Lorsque vous augmenter ou diminuer le pourcentage, assurez-vous de régler le total des tas Java du même montant.
Vous avez re-configuré de nombreuses G1GC paramètres, qui ne sont pas nécessaires si vous suivez ci-dessus page de documentation. Veuillez vérifier avec les recommandations ci-dessus, en particulier sur ParallelGCThreads et ConcGCThreads, qui sont fondées sur vos cœurs. Supprimer la re-configuration de l'onu-les paramètres nécessaires.
Recommandations à partir d'oracle:
Lorsque vous évaluer et d'affiner G1 GC, garder à l'esprit les recommandations suivantes:
Jeune Génération Taille: Évitez de définir explicitement les jeunes de la génération de la taille avec le
-Xmn
option ou tout, ou à d'autres options telles que le-XX:NewRatio
. La fixation de la taille de la jeune génération remplace la cible pause-but dans le temps.Temps de Pause Objectifs: Lorsque vous évaluer ou optimiser toute la collecte des ordures, il y a toujours un temps de latence rapport à un débit de compromis. Le G1 GC différentiel garbage collector uniforme avec des pauses, mais aussi plus généraux sur les threads de l'application. Le débit objectif pour le G1 GC est de 90 pour cent de demande du temps et de 10 pour cent de collecte des ordures temps.
Il y a quelques changements avec Java 7. Jetez un oeil à cette l'article
Reportez-vous à la documentation oracle page sur gc et connexes SE question:
Java G1 collecte des ordures dans la production
La documentation disponible à l' http://www.oracle.com/technetwork/java/javase/tech/g1-intro-jsp-135488.html (le lien fourni par Wojtek) semble être le seul lien officiel avec des informations, mais l'info semble dépassée que certaines des options mentionnées n'étaient disponibles que dans les versions de test, ils n'existent plus dans la production de rejets. Quelqu'un à partir d'Oracle devrait fournir des mises à jour de la documentation sur le G1 GC.
Pas de G1 n'est pas par défaut garbage collector dans le jdk 1.7.0_02.
La valeur par défaut garbage collector dépend de la classe de la machine.
Si la machine est de classe Serveur par défaut, le garbage collector est le Débit du Collecteur.
Si la machine est de classe du Client par défaut, le garbage collector est de Série Collector.
Par défaut, vous n'avez pas vraiment envie d'utiliser G1 collector, comme il n'est pas vraiment mieux que les autres. Il est bon seulement pour des fins spéciales.
À faible temps de latence de l'application est est légèrement mieux que la CMS, comme il est un peu plus courte, et plus prévisible des temps de pause. En échange, le débit est bien pire que la CMS en échange.
De sorte qu'il n'est bon que si le temps de latence est important, mais le débit n'est pas important du tout. Si les deux sont importants, alors restez avec la CMS.