2010-07-19 3 views
4

Nous utilisons java webstart côté client pour une application basée sur java swing. Récemment, nous avons expérimenté une étrange erreur "Impossible de démarrer la machine virtuelle Java" lorsque vous cliquez sur le lien jnlp. Nous l'avons découvert car le paramètre max-heap-size dans le fichier jnlp a été défini sur 1024m alors que la plupart des ordinateurs clients ne disposent que de 1 Go de mémoire physique. Définir la taille max-tas à 512m a résolu le problème. Actuellement, la ligne correspondante dans le fichier jnlp ressembleJava webstart max-heap-size causes JVM ne peut pas être démarré

<j2se version="1.5+" initial-heap-size="100m" max-heap-size="512m"/> 

J'ai regardé dans les spécifications jnlp, mais ne peut pas trouver tout ce qui concerne la question « de la machine virtuelle Java ». En théorie, la taille max-heap ne devrait pas avoir autant d'importance que la taille initiale du tas. Mais notre expérience suggérait plutôt le contraire.

L'environnement client:

Windows XP SP2 (32 bits), Internet Explorer 8.06, mémoire 1G Remarque max-size tas mis à 1024m peut provoquer le même problème sur une machine avec la RAM 2G. Fondamentalement, ce que je recherche ici est une référence/spécification/expérience sur la raison pour laquelle cela se produit, et s'il y a une solution pour ce problème en plus d'augmenter la taille de la mémoire physique. Une autre chose est que si nous laissons la taille max-heap-unspecified, la taille de la mémoire physique réelle sera-t-elle utilisée comme taille max-heap, ou une valeur par défaut sera utilisée?

Merci, JasonW

Répondre

3

Il est probable que ce problème est causé par le fait qu'une zone de mémoire suffisamment importante ne pouvait être attribué à votre machine virtuelle Java. Le tas d'objets Java doit être alloué dans des adresses virtuelles contiguës, pour des raisons d'implémentation. J'ai remarqué que sur une boîte Win XP avec 2 Go de RAM, cela casse à environ 1,5 Go (cela dépend bien sûr des processus en cours sur chaque PC, donc YMMV).

Commander Les postes suivants pour quelques explications:

Java maximum memory on Windows XP

Why is the maximum size of the Java heap fixed?

+0

liens très utiles. Merci. Il me surveille toujours qu'il n'y a rien (au moins je ne trouve rien) sur les exigences pour le paramètre jnlp max-heap-size. –

1

Je trouve que les deux la taille tas initiale et la taille maximale tas n'ont pas été respecté par la version Mac de javaws. J'ai fini de les remplacer par quelque chose comme ceci:

 <j2se version="1.6+" java-vm-args="-Xmx1024m -Xms256m -Xss8m" /> 

Et finalement obtenu fonctionner sur Mac avec la plus grande taille du tas

+1

Ne fonctionne pas sous Windows avec Java 8 – jan

Questions connexes