2010-07-30 32 views
30

Je regarde les options de configuration JVM pour exécuter Alfresco, principalement this document sur le Alfresco Wiki. L'une des recommandations consiste à utiliser les indicateurs JVM -Xcomp et -Xbatch. La justification de ceci est:Java VM tuning - Xbatch et -Xcomp

Si vous souhaitez que Hotspot précompile les classes, vous pouvez ajouter [-Xcomp et -Xbatch]. Cela augmentera cependant considérablement le temps de démarrage du serveur, mais mettra en évidence les dépendances manquantes qui peuvent être atteintes plus tard.

D'après ce que je read elsewhere sur les -Xcomp et -Xbatch drapeaux, je me demande si elles fournissent vraiment un avantage.

  • -Xcomp obtient HotSpot pour compiler tout le code au préalable avec une optimisation maximale, ce qui précède ainsi tout profilage que la machine virtuelle passer à travers la norme du fonctionnement du système.
  • -Xbatch arrête la compilation en arrière-plan, ce qui signifie que le thread qui a provoqué la compilation du code jusqu'à la fin de la compilation. Toutefois, une fois la compilation terminée, le thread précédemment bloqué n'exécutera pas le code compilé, it will still run the interpreted code. C'était un changement dans Java 6 (Mustang) - avant Mustang, les threads bloqués pour la compilation par la présence du drapeau -Xbatch étaient garantis pour s'exécuter dans le code compilé dès que la compilation était terminée. Par conséquent, je devine que la recommandation de l'indicateur -Xbatch est une relique de l'exécution d'Alfresco sur les machines virtuelles plus anciennes.

Quelqu'un a-t-il des idées? Mon envie est de se débarrasser de ces deux drapeaux et de compter sur la VM pour faire les choses correctement.

Je voudrais ajouter deux choses, tout d'abord que je n'ai pas encore accès à une instance Alfresco pour tester cela et deuxièmement je ne sais pas vraiment quelle spécification de machine héberge Alfresco autre que celle par en regardant les autres options de configuration, il doit s'agir d'une machine virtuelle 64 bits. Malgré cela, j'espère que la communauté aura une contribution utile, peut-être d'un point de vue général sur l'optimisation des HotSpot.

+0

La section exemple du monde réel sur la page Alfresco est août 2009 et il semble être JDK 1.6? – shinynewbike

+0

@ktaylorjohn Oui, c'est vrai, mais je me demande simplement si les drapeaux -Xbatch et -Xcomp font une différence. Alfresco semble être le seul projet qui mentionne ces drapeaux en dehors des domaines des tests JVM et similaires. – Rich

Répondre

21

De manière générale, il est toujours préférable de laisser le compilateur HotSpot se régler lui-même. Même en utilisant Server VM (-server) est la valeur par défaut pour 64 bits et certaines machines de type serveur.

-Xbatch était destinée principalement pour le débogage comme décrit dans Steve Goldman's blog vous l'avez dit:

Ainsi, le commutateur -Xbatch est pas un interrupteur particulièrement utile, même dans les jours pré-mustang. C'est un peu utile pour les développeurs jvm car il tend à rendre une exécution plus prévisible et reproductible.

-Xcomp supprime la possibilité de collecter des informations pour une compilation efficace. D'un Alex Turner's post:

On pourrait penser que -Xcomp serait une bonne idée du point de vue des performances. Cependant, ce n'est pas! Le compilateur JIT utilise ces 1000 itérations avant la compilation pour rassembler des informations sur la façon dont la méthode doit être compilée pour une efficacité optimale. -Xcomp supprime sa capacité à le faire et ainsi nous pouvons réellement voir un glissement de performance.

Sans la performance à l'esprit, je ne l'ai jamais vu utiliser ces drapeaux pour détecter les dépendances manquantes (and it may not work if some code is still interpreted) donc à mon humble avis, je vous débarrasser des deux.

+0

lien est mort btw – Eugene

0

Alfresco est une solution de gestion de contenu d'entreprise. Je ne suis pas sûr de savoir comment les drapeaux affectent ses performances. Puis une note dans la même page a indiqué ..

- Cela augmentera cependant considérablement le temps de démarrage du serveur, mais mettra en évidence les dépendances manquantes qui peuvent être touchées plus tard. ...

À mon humble avis, l'auteur ne signifiait pas vraiment un gain de performance. Il/elle a écrit comme moyen de vérifier toutes les dépendances sont en place.