33 votes

Machine virtuelle Java: IBM vs Sun

Je suis surpris du peu d'informations que je peux trouver en comparant le JVM d'IBM à celui de Sun. Comment se comparent-ils?

J'ai toujours utilisé la version de Sun - pour quelles raisons (le cas échéant) envisagez-vous de passer à IBM?

EDIT: Pour formuler la question un peu différemment: pour ceux d'entre vous qui utilisent JVM d'IBM, quelles sont vos raisons?

12voto

Jonathan Points 3145

Mon expérience avec le Soleil et la Jvm IBM a mis au jour deux différences importantes pour moi. Il y a probablement d'autres, mais ceux-ci sont le plus important de ce que j'ai fait récemment. Espérons que cela aide.

Gestion De La Mémoire

IBM et Sun Jvm ont radicalement différents modèles de mémoire, ce qui peut affecter de manière significative la collecte des ordures de la performance. La JVM de Sun utilise un générationnelle garbage collector, qui fonctionne mieux pour les objets éphémères et raisonnablement bien si vous allouer beaucoup de mémoire à votre JVM (à l'aide de l' -Xms et -Xmx drapeaux). Il est typique lors de l'utilisation de la JVM de Sun pour utiliser les mêmes valeurs pour le minimum et le maximum de tailles de tas (par exemple, -Xms1536m -Xmx1536m). Cela fonctionne bien pour les générations GC modèle parce que la JVM de Sun ne sera mineur garbage collections régulièrement, balayer, seule une petite partie de l'ensemble du segment.

La JVM IBM, par défaut, ne pas utiliser un générationnelle garbage collector. Vous pouvez demander à la JVM IBM pour l'utiliser comme un commutateur de ligne de commande (-Xgcpolicy:gencon), mais ce n'est pas la valeur par défaut. Garder la valeur par défaut non-générationnelle garbage collector peut améliorer les performances de certaines applications, mais YMMV. Avec la JVM IBM, il est important de fixer -Xms aussi bas que possible et de permettre à la JVM pour pousser le tas jusqu'à -Xmx en tant que de besoin. Si vous définissez à la fois à la même valeur, comme vous le feriez pour la JVM de Sun, vous aurez de très hautes performances de l'application jusqu'à la première de "Stop the world" garbage collection. Ensuite, votre application va s'accrocher pour potentiellement minutes alors qu'il neutralise le tas.

Dépannage

Je suis un grand fan de la JVM IBM fil des décharges. L'Oracle/Sun sont beaucoup plus faciles à lire si vous êtes à la recherche comme un humain, mais je n'ai pas trouvé rien de mieux que le IBM Fil et Moniteur de Vidage de l'Analyseur pour l'Oracle de la JVM. IBM outil a été précieux pour moi dans le dépannage des problèmes de performances.

Je suis conscient de Samouraï, qui est à peu près un outil équivalent pour Oracle JVM fil des décharges, mais il n'a pas un ensemble de fonctionnalités que l'IBM équivalent.

9voto

Joachim Sauer Points 133411

J'ai été en utilisant IBM et Sun à peu près aussi souvent dans la production. Parfois, nous pouvons courir à travers certains de s'écraser-les bogues dans l'un ou l'autre, essayez de l'autre et si cela fonctionne, il est la JVM du moment jusqu'à ce que le bug est corrigé.

Il y a quelques temps le JDK IBM a été quelque peu plus rapide dans certaines configurations, mais je ne sais pas si c'est vrai plus.

La principale question est: voulez-vous d'un soutien commercial et si oui, à qui feriez-vous plutôt payer? Lorsque vous exécutez une très IBM-lourds de la boutique, alors vous pourriez envisager d'utiliser le JRE IBM.

4voto

martinatime Points 1863

J'utilise la machine virtuelle Java d'IBM principalement parce qu'elle est utilisée dans leur gamme de produits WebSphere. Une différence que j’ai apprise il ya quelques années est que les algorithmes de ramassage des ordures sont différents. Je n'ai pas de lien pour le sauvegarder et je ne suis même pas sûr que ce soit toujours le cas.

4voto

Draemon Points 15448

J'ai utilisé IBM, très brièvement, et il a été plus rapide à l'époque - mais c'était il y a longtemps et je ne pense pas que c'est le cas, pas plus.

Vous pourriez envisager de l'exécution de votre application sous 2 ou 3 différentes machines virtuelles java pour quelques raisons en plus de la performance:

  • Pour éviter des bugs dans une JVM
  • Pour vous assurer que vous n'êtes pas en s'appuyant sur toute JVM-comportement spécifique
  • Pour assurer la compatibilité si vous relâchez le logiciel à des personnes qui peuvent être à l'aide de différentes machines virtuelles java
  • Il y ont été (et sont toujours) des problèmes avec du Soleil de la JVM et la façon dont il utilise / parle à X11 donc, IBM pourrait être un meilleur choix pour le Swing

3voto

Steve B. Points 23227

Une autre machine virtuelle alternative que vous pouvez explorer est le jrockit de BEA, qui devait également être plus rapide, spécifiquement annoncé comme optimisé pour J2EE. Comme avec le jdk IBM, l’avantage était supposé être la performance.

Je n'ai pas regardé cela depuis 1,4 jours, donc mes informations sont un peu datées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X