2010-04-03 5 views
0

J'essaye ceci avec le modèle d'application de bureau de NetBeans - augmentant le tas (à 512 Mio) du fichier .jar exécuté. (Je crois que NetBeans utilise l'application Singleton par défaut - SingleFrameView) Cela fonctionnera-t-il?Taille de segment Java - est-ce que cela fonctionnera?

public static void main(String[] args) { 
     if (args == null) { 
      args = new String[1]; 
      args[0] = "Xmx512m"; 
     } else { 
      String[] tempArgs = new String[args.length+1]; 
      for (int i=0; i<args.length; i++) { 
      tempArgs[i] = args[i]; 
      } 
      tempArgs[tempArgs.length-1] = "Xmx512m"; 
      args = tempArgs; 
     } 
     launch(MyApp.class, args); 
    } 
} 
+0

Cela "semble" fonctionner, mais pas si cette application utilise vraiment 512 Mo de heap (JVM fait) – UnCon

+0

Quelle est cette méthode de lancement()? –

+0

ici jeter un oeil https://appframework.dev.java.net/nonav/javadoc/AppFramework-1.03/index.html – UnCon

Répondre

1

Ne fonctionne pas. L'espace de segment est défini à partir du paramètre -Xmx au moment de l'initialisation de la machine virtuelle Java. Au moment où vous exécutez le code Java, il est trop tard.

Il peut y avoir une exception si la méthode launch() génère une nouvelle machine virtuelle , mais rien de ce que je vois n'indique que c'est le cas.

+0

Quand je vérifie la taille de la JVM du profileur, il est dit 512 MiB. Alors qu'est-ce que cela signifie? Application redimensionnée taille JVM ... Mais il sera toujours en mesure d'utiliser seulement 128 MiB de tas? – UnCon

+0

Et autre chose, les fichiers .class bytecode sont "lancé" après le redimensionnement JVM ... hmm – UnCon

+0

Ok ... ne fonctionne pas après tout :-( – UnCon

Questions connexes