2010-02-09 7 views
4

Je suis en cours d'exécution d'un fichier ".bat" qui pointe vers asant:Problèmes avec l'espace java heap, comment augmenter la taille du tas?

C:\Sun\SDK\bin\asant Startbds 

asant souligne à nouveau dans un fichier xml j'ai, build.xml:

<target name="Startbds" description="Start bds"> 

Cela a été bien pour l'instant, mais maintenant je ont ajouté plus de données, ce qui conduit à une erreur de dépassement de mémoire:

java.lang.outOfMemoryError: Java heap space 

J'ai donc essayé d'augmenter l'espace de tas par diverses méthodes que j'ai trouvé lors de la recherche autour d'une solution:

  • cmd: mis ANT_OPTS=-Xms512m -Xmx512m (ne fonctionnait pas, même message d'erreur)
  • Modification du asant.bat où i la ligne "édité -Set ANT_OPTS" de

.

set ANT_OPTS="-Dos.name=Windows_NT" -Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%" 

À

set ANT_OPTS="-Xms512m -Xmx512m" "-Dos.name=Windows_NT" -Djava.library.path=%AS_INSTALL%\lib;%AS_ICU_LIB%;%AS_NSS%" "-Dcom.sun.aas.installRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceRoot=%AS_INSTALL%" "-Dcom.sun.aas.instanceName=server" "-Dcom.sun.aas.configRoot=%AS_CONFIG%" "-Dcom.sun.aas.processLauncher=SE" "-Dderby.root=%AS_DERBY_INSTALL%" 

mais cela m'a donné le message d'erreur:

"Invalid initial heap size: -Xms512m -Xmx512m 
Could not create the Java virtual machine." 

Quelqu'un at-il une idée de la façon dont je devrais augmenter la heapsize? Et peut-être aussi donner un pointeur vers où je peux trouver un outil pour regarder le tas.

Merci d'avance.

+0

1 Go. Serveur Windows 2008. – Ikky

Répondre

6

En utilisant "-Xms512m -Xmx512m" vous a donné un seul argument . -Xms s'attend à ce que la taille minimale du tas soit spécifiée par le reste de l'argument. Vous avez donc défini la taille minimale du tas comme étant "512m -Xmx512m", ce qui n'est pas une valeur valide.

Vous voulez fournir ces commutateurs comme deux arguments:

set ANT_OPTS=-Xms512m -Xmx512m "-Dos.name=Windows_NT" ... 
+0

Merci pour le conseil. Je n'ai pas reçu le message d'erreur: "Taille de segment de mémoire initiale non valide: -Xms512m -Xmx512m Impossible de créer la machine virtuelle Java." Mais j'ai toujours le problème avec l'espace de tas Java. – Ikky

+0

J'ai essayé d'augmenter la taille de la page sur c: à 5 Go, puis j'ai essayé d'augmenter la taille du tas à 4 Go, mais maintenant je reçois l'erreur: "Impossible de réserver suffisamment d'espace pour le tas d'objets". Y a-t-il une limite? – Ikky

+0

@ikky: une limite est le bélier physique disponible dans votre machine. Un autre est la taille maximale de heap qu'un seul processus peut avoir (je pense que c'est 2 Go sur Windows 32 bits) moins une certaine quantité que la JVM a besoin pour d'autres parties. –

1

Je pense que si vous êtes sous Windows, vous n'avez pas besoin des guillemets doubles dans votre jeu. Voici un exemple que j'ai vu quelque part:

set ANT_OPTS=-Xms512m -Xmx512m (Windows) 
export ANT_OPTS="-Xms512m -Xmx512m" (ksh/bash) 
setenv ANT_OPTS "-Xms512m -Xmx512m" (tcsh/csh) 

En ce qui concerne la surveillance utilisation du tas, si vous utilisez le plus récent sur Windows JDK, vous devriez avoir VisualVM de dim.

+0

Je vais vérifier ça. Je vous remercie. – Ikky

0

dans Eclipse-> window-> Préférences-> Tomcat-> Réglage- JVM> Ajoute à JVM Paramètres

-XX: MaxPermSize = 512m

-Xms512m

-Xmx512m