Question

Je suis curieux de savoir quelle est la signification exacte de "commis". memory est quand la valeur est interrogée à partir de la classe MemoryUsage. Cette classe explique que "commis" représente la quantité de mémoire (en octets) dont on garantit la disponibilité pour être utilisée par la machine virtuelle Java. " Cela signifie-t-il que la mémoire est utilisée par le processus jvm et NON disponible pour d'autres processus jusqu'à ce qu'elle soit libérée par le processus java, ou signifie-t-il que le processus java réussira s'il tente d'allouer jusqu'à cette quantité de mémoire? ? Je réalise que cela pourrait être spécifique à la mise en œuvre mais je ne suis intéressé que par le hotspot.

Était-ce utile?

La solution

La taille engagée est la mémoire réellement allouée, la taille utilisée est la taille utilisée pour stocker les données réelles (en cas d'utilisation, ~ = engagé, il est temps de passer à la phase principale de GC et éventuellement à la croissance du tas). La taille maximale correspond à la limite stricte à laquelle le segment de mémoire peut croître. Si cela ne suffit pas, la machine virtuelle Java émet une erreur OutOfMemoryError.

Si une mémoire est validée, elle peut certainement être utilisée. En outre, la seule occasion où la machine virtuelle Java ne pourrait pas engager davantage de mémoire (sur un système d'exploitation moderne) est si le matériel est à court de mémoire virtuelle.

Toutes ces tailles ne vous indiquent que la taille de la région du tas. La machine virtuelle Java dispose également d'autres régions de mémoire (piles de threads, cache JIT, etc.). La région de segment de mémoire est généralement la plus grande, ce qui correspond à peu près à l'empreinte du processus.

Deux notes:

  • si la taille engagée ne rentre pas dans la mémoire physique, certaines parties seront échangées dans le fichier de page. Cela entraîne un ralentissement important du processus de GC et dans ce cas, vous améliorerez les performances de l'application en réduisant la taille du segment de mémoire.
  • certains systèmes d'exploitation autorisent la double réservation de mémoire - vous pouvez en allouer autant que vous voulez tant que vous n'essayez pas de l'utiliser (vous avez oublié quel système d'exploitation il s'agissait - quelqu'un m'a renseigné)

Autres conseils

"Cela signifie-t-il que la mémoire est utilisée par le processus JVM et NON disponible pour d'autres processus" serait le bon. La quantité de mémoire que le système d’exploitation considère comme étant prise par le processus JVM est donc inférieure à (ou égale à).

http://java.sun.com /j2se/1.5.0/docs/guide/management/jconsole.html (désolé aucune ancre à lier à).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top