2011-03-05 2 views

Répondre

1

Je ne pense pas. Le compilateur aura besoin de construire un arbre de syntaxe complet, etc, pour fonctionner, donc limiter son utilisation de la mémoire ne serait pas la meilleure des idées.

12

Vous pouvez donner les mêmes options d'exécution à javac (et la plupart des programmes Java avec un propre démarreur natif) en utilisant -J options. Par convention, toutes ces options sont transmises directement au système d'exécution. Donc, dans votre cas, vous pouvez appeler

javac -J-Xmx5m -J-Xmx4m <source> 

pour lancer javac avec très peu de mémoire. Bien sûr, comme l'a dit reseter, son utilisation est limitée de cette façon, car javac peut vraiment avoir besoin d'une quantité de mémoire pour compiler. Sur de très gros projets, vous voudrez peut-être augmenter la mémoire de cette façon.

0

Pour un shell unix, vous pouvez utiliser la commande ulimit (http://ss64.com/bash/ulimit.html).

bash -c ' ulimit -v 1048576; javac PrettyWoman.java '. 

Le -v option est la limite de la mémoire virtuelle du processus de javac.

Cependant, il nécessite beaucoup de mémoire virtuelle, sinon l'erreur suivante se produit,

« Une erreur est survenue lors de l'initialisation de la machine virtuelle. Impossible de réserver suffisamment d'espace pour le tas d'objets. Impossible de créer la machine virtuelle Java «

Note: méthode java - Thread.sleep ne sera pas compté dans la limite de temps ulimit (temps réel en fonction du temps CPU), donc si vous utilisez ulimit avec un fichier java. , le fichier java peut juste continuer à dormir comme il aime

Questions connexes