2010-08-11 23 views
1

J'ai un programme qui nécessite fondamentalement beaucoup de mémoire. Cependant, pour une raison quelconque, java me donne une erreur lorsque j'essaie de définir l'espace de tas au-dessus de 1,5 Go. C'est en cours d'exécutionTaille du tas Java: erreur lors du réglage trop grand

java -Xmx1582m [my program] 

est correct, mais

java -Xmx1583m [my program] 

donne l'erreur

Error occurred during initialization of VM 
Could not reserve enough space for object heap 
Could not create the Java virtual machine. 

Je suis la même erreur dans les deux ligne de commande Windows et Eclipse.

Voici mes configurations de système:

Windows 7 (64 bits)

Intel Core 2 Quad CPU

RAM installée: 8,00 Go

version Java 1.6.0

Il est bizarre que je ne peux définir que 1,5 Go de mémoire, même si je suis en cours d'exécution 64 bits OS avec 8 Go de RAM. Y a-t-il un moyen de contourner ce problème?

+0

Utilisez-vous un JRE pour Windows x64 ou Windows? –

+0

Similaire: http://stackoverflow.com/questions/1434779/maximum-java-heap-size-of-a-32-bit-jvm-on-a-64-bit-os – Pops

+0

Je sais que vous avez dit que vous avez 8 Go de RAM, mais le texte de l'erreur correspond à l'erreur "Vous utilisez un plus gros tas que de mémoire disponible". Je pense que cela peut être une limitation de la JVM, mais je suis toujours en train d'examiner la question. – Pops

Répondre

3

Le cas le plus probable est le suivant: alors que votre système d'exploitation est est 64 bits, votre machine virtuelle Java ne l'est pas. L'ouverture d'une ligne de commande et la saisie de java -version vous donneront les informations de version détaillées, qui devraient indiquer si votre JVM installée est une version 32 ou 64 bits. Une JVM 64 bits ne devrait pas avoir de problème avec les limites de mémoire plus élevées.

+0

Ah, il semble que l'installation du JDK 64 bits fonctionne! Problème résolu! Merci :) – Yufei

+0

Content de l'entendre. De plus, je n'avais pas réalisé que la JVM 32 bits ne mentionne pas qu'elle est en 32 bits avec '-version' (la version 64 bits dit en fait 64 bits), désolé pour ça! –

-2

Pour l'espace de tas est utilisé

-XX:MaxPermSize=64m 
+1

Pourriez-vous élaborer? Exécution java -XX: MaxPermSize = 64m -Xmx1583m [mon programme] donne toujours la même erreur. – Yufei

+0

-1 '-XX: MaxPermSize' est pour la génération permanente. Sa taille est comptée à part du reste du tas. – fglez