web-dev-qa-db-fra.com

comment augmenter la mémoire de tas Java en permanence?

J'ai un problème avec Java mémoire de tas. J'ai développé une application client-serveur en Java qui est exécutée en tant que service Windows, elle nécessite plus de 512 Mo de mémoire). J'ai 2 Go de RAM mais quand j'exécute mon application, il lève une exception

Erreur de mémoire insuffisante: espace de tas Java

mais j'ai déjà défini la taille de segment de mémoire (maximum 512 Mo) dans le panneau de configuration Java et j'obtiens toujours la même erreur. Je ne peux pas définir la taille de segment de mémoire via la ligne de commande car mon application s'exécute en tant que service Windows alors comment puis-je augmenter la taille de segment par défaut?

21
Mr.Cool

La machine virtuelle Java Java prend deux arguments de ligne de commande qui définissent les tailles de tas initiale et maximale: -Xms et -Xmx. Vous pouvez ajouter une variable d'environnement système nommée _Java_OPTIONS et y définir les valeurs de taille de tas .
Par exemple, si vous voulez une taille initiale de 512 Mo et 1024 Mo maximum, vous pouvez utiliser:

sous Windows:

SET _Java_OPTIONS = -Xms512m -Xmx1024m

sous Linux:

export _Java_OPTIONS="-Xms512m -Xmx1024m"

Il est possible de lire la taille de tas JVM par défaut en utilisant la méthode totalMemory () de la classe Runtime. Utilisez le code suivant pour lire la taille du tas JVM.

public class GetHeapSize {
    public static void main(String[]args){

        //Get the jvm heap size.
        long heapSize = Runtime.getRuntime().totalMemory();

        //Print the jvm heap size.
        System.out.println("Heap Size = " + heapSize);
    }
}
36
George D

si vous avez besoin d'augmenter la mémoire réservée, il y a VM paramètres -Xms et -Xmx, utilisation par exemple -Xms512m -Xmx512m. Il y a aussi le paramètre -XX: MaxPermSize = 256m qui change la mémoire réservée pour permanente génération

Si votre application s'exécute en tant que service Windows, dans les panneaux de configuration -> Outils d'administration -> Services, vous pouvez ajouter des paramètres d'exécution à votre service

2
Jan Hruby

Cela a fonctionné pour moi:

export _Java_OPTIONS = "- Xmx1g"

Il est important que vous n'ayez pas d'espace car pour moi cela n'a pas fonctionné. Je suggérerais simplement de copier et coller. Puis j'ai couru:

Java -XshowSettings: vm

et il vous dira:

_Java_OPTIONS ramassé: -Xmx1g

1
Justin Chitla