2011-10-24 4 views
0

Quel est l'ensemble de paramètres GC le plus couramment utilisé?Quel est le jeu de paramètres JVM GC le plus simple pour une application serveur?

+3

Je ne sais pas si cette question est vraiment sur le sujet. De toute façon, vous devriez poster tout en dessous de la ligne comme une réponse à votre question. Vous pouvez répondre à vos propres questions! –

+1

icms n'est recommandé sur aucun système moderne (plus d'un noyau) en raison de la nature à thread unique de la phase init mark et de la programmation entre les récupérations en mode icms. – Matt

+0

Vous devriez également avoir ces logs toujours en test et déclaration globale d'un tas 6g est assez insignifiant, par exemple l'impact de compressedoops – Matt

Répondre

-1

Je pensais partager quelques paramètres qui ont fonctionné pour les applications serveur que j'ai réglées par le passé. Ceux-ci ont été avec Sun/Oracle JDK 6 (au moment d'écrire ces lignes).

Il s'agit probablement de l'ensemble de paramètres GC le plus couramment utilisé. Bien sûr, les paramètres dépendent fortement de la nature de votre application: vie de l'objet, taux d'allocation, complexité des références/pointeurs, etc. Si votre expérience a été différente, partagez-la.


Paramètres de base. Les tas min et max sont les mêmes. Suppose une machine 64 bits. Les tas de plus de 4-6g nécessiteront un réglage et un test minutieux. 6g n'est pas obligatoire
-server -Xms6g -Xmx6g -XX:MaxPermSize=256m

Option A (collecteur parallèle): travail à haut débit, par lots. Pauses périodiques notables.
-XX:+UseParallelGC

Option B (CMS): débit inférieur, latence inférieure, traitement en continu. Des micro-pauses fréquentes et imperceptibles, de longues pauses rares. Surveillance supplémentaire pendant UAT/SAT/Pré-production. Voir ce journal en utilisant HPJmeter ou GCViewer.
-verbose:gc -Xloggc:my_gc_output.hprof -XX:+PrintGCTimeStamps -XX:+PrintGCDetails


Cheers!

+0

Eh bien, iCMS n'est plus recommandé [http://blogs.oracle.com/jonthecollector/entry/really_icms_really], d'autant plus que la plupart des serveurs ont plusieurs cœurs/threads. –

0

La question comme indiqué est trop vague pour répondre sainement. Cela dépend de votre charge de travail, de vos exigences et de vos objectifs.

En général, je commencerais par -Xmx (quantité de RAM dont vous avez besoin) g, et -XX: UseCompressedOops. Au-delà, faites un test. Apportez les modifications un à la fois et mesurez leur effet sur votre propre charge de travail.

0

La question est vraiment très vague, AFAIK il n'y a pas un ensemble de paramètres qui peuvent être utilisés pour toutes/la plupart des applications. A moins que je ne me trompe, à partir de JDK 6, la JVM a aussi une capacité limitée à se régler de toute façon. Les étapes que vous pourriez prendre sont:

étape 1. mettre dans certains Xmx et MaxPermSize si vous "connaissez" votre application aura besoin de plus que la valeur par défaut. étape 2. Exécutez l'application et regardez jstat. Passez à l'étape 3 si le modèle GC n'est pas satisfaisant. étape 3. Réglez un paramètre à la fois en fonction de votre observation. étape 4. Répétez - passez à l'étape 2 :-)

C'est la seule façon dont j'ai vu le travail de réglage. Si vous utilisez un produit (tel que Weblogic, Websphere), le fournisseur peut vous recommander des paramètres de base avec lesquels vous pourriez commencer, mais en général, vous voudriez commencer par ceux par défaut. Sincères salutations

Questions connexes