Java webstart max-heap-taille causes de la JVM ne peut pas être démarré
Nous utilisons java webstart sur le côté client pour un java swing en fonction aplication. Récemment, nous avons été confronté à un étrange "Ne peut pas démarrer la machine Virtuelle java" erreur lorsque vous cliquez sur dans le jnlp lien.
Nous nous sommes vite découvrir son parce que le max-heap-réglage de la taille dans le fichier jnlp a été mis à 1024m alors que la plupart des PC clients ont seulement 1 go de mémoire physique. Réglez max-heap-taille retour à 512m résolu le problème.
Actuellement, la ligne correspondante dans le fichier jnlp ressemble
<j2se version="1.5+" initial-heap-size="100m" max-heap-size="512m"/>
J'ai regardé dans le jnlp spec, mais ne trouvez pas tout ce qui est lié à la "machine Virtuelle Java". En théorie, le max-heap-taille devrait pas autant d'importance que la première-tas-taille. Mais notre expérience a suggéré tout à fait le contraire.
De l'environnement client:
Windows XP SP2 ( 32bit ), Internet Explorer 8.06, de la Mémoire 1G
Note max-heap-définissez la taille de 1024m peut provoquer le même problème sur une machine avec 2G de ram.
Fondamentalement, ce que je cherche ici est une référence/spec/expérience sur les raisons de ce qui se passe, et si il n'y a aucun get-rond pour cette question, outre l'augmentation de la taille de la mémoire physique.
Une autre chose est que si on laisse le max-heap-taille non spécifiée, la taille de la mémoire physique être utilisé comme max-heap-taille, ou d'un système par défaut sera utilisé?
Grâce,
JasonW
OriginalL'auteur Jason Wang | 2010-07-19
Vous devez vous connecter pour publier un commentaire.
Il est probable que ce problème est causé par le fait qu'une assez grande zone de mémoire n'a pas pu être attribuée à votre JVM. L'objet Java tas doit être alloué contigu adresses virtuelles, pour la mise en œuvre des raisons.
J'ai remarqué que sur un Win XP boîte avec 2 Go de RAM cela rompt autour de 1,5 GO (ce cours varie en fonction de quels sont les processus en cours d'exécution sur chaque PC, YMMV).
Checkout les postes suivants pour les quelques explications:
Java maximale de la mémoire sous Windows XP
Pourquoi est la taille maximale du tas Java fixe?
OriginalL'auteur
J'ai trouvé que le rapport initial de tas de la taille et max-tas-la taille n'ont pas été respectées par la version Mac de javaws. J'ai fini par les remplacer par quelque chose comme ceci:
Et a finalement obtenu ce travail sur Mac avec la plus grande taille de segment de mémoire
OriginalL'auteur sullivan-