2010-11-19 20 views
11

En supposant que je commence ma machine virtuelle Java avec les paramètres suivants:L'espace java PermGen fait-il partie de la mémoire VM totale?

-Xms1024m -Xmx1024m -XX:PermSize=512m -XX:MaxPermSize=512m 

Est-ce que l'espace 512m PermGen ajouter à la mémoire de 1024m ou sont-ils partie? Ou en d'autres termes, ai-je une consommation totale de mémoire de 1536m ou de 1024m? Dans ce dernier cas, cela signifie-t-il que l'application n'a que 512 m à des fins autres que l'espace PermGen?

S'il vous plaît laissez-moi savoir au cas où cette question révèle un manque de compréhension de l'espace PermGen. ;-)

+0

Pourquoi ne l'essayez-vous pas? Devrait être immédiatement visible dans le haut/le gestionnaire de tâches. –

+0

duplication possible de [Est-ce que permgen est inclus dans -Xmx?] (Http://stackoverflow.com/questions/4084280/is-permgen-included-in-xmx) –

Répondre

15

Les -Xms et -Xmx paramètres font référence à tas mémoire, tandis que l'espace PermGen est un pool de mémoire séparée. En d'autres termes, la taille totale de la mémoire disponible pour votre application Java sera de 1,5 Gio au lieu de 1 Gio, et vous obtiendrez le gigaoctet d'espace total pour les objets alloués par segment.

0

Dans la machine virtuelle Java de Sun, la génération permanente ne fait pas partie du tas. Il s'agit d'un espace différent pour les définitions de classe et les données associées, ainsi que pour l'emplacement des chaînes internées.

1

Je viens d'arriver sur cette page avec Google. C'est une certaine confusion si PerGen fait partie de Heap ou non: La réponse est "Tas est divisé en petites parties/générations et ces parties sont: jeune génération, ancienne génération ou tenured génération, et génération permanente". C'est ce que dit Oracle pour dire le moins. Il est beaucoup plus logique d'utiliser ce que dit l'auteur que le public sur le Web.

Une courte note sur PermGen: génération permanente contient des métadonnées requises par la machine virtuelle Java pour décrire les classes et les méthodes utilisées dans l'application. La génération permanente est renseignée par la JVM au moment de l'exécution en fonction des classes utilisées par l'application. De plus, les classes et méthodes de bibliothèque Java SE peuvent être stockées ici.