Как рассчитать максимальный объем памяти, который может использоваться приложением Java - PullRequest
2 голосов
/ 17 июля 2010

У меня есть Java-приложение, у которого максимальная куча составляет 1024 МБ, оно имеет постоянное пространство 256 МБ.Гарантирует ли это, что это приложение никогда не будет использовать больше 1280M (1024 + 256)?

Получается ли стековая память также из размера кучи выше или это дополнительное потребление памяти?

Что еслиJava-приложение использует нативный код, который потребляет память, тогда откуда эта память?heap / perm gen / more ram?

Мне интересно знать, как Java использует память.Прокомментируйте, пожалуйста.Любые ссылки, которые могут обеспечить четкое изображение, также приветствуются

thankyou

Ответы [ 2 ]

2 голосов
/ 17 июля 2010

Выполняемое приложение Java использует больше памяти, чем основная куча и пространство permgen.Например:

  • Имеется память, в которой хранится исполняемый код программы java, и любые общие библиотеки, которые динамически связаны с исполняемым файлом.
  • Используется памятьдля представления структур данных, буферов и т. д., находящихся вне кучи, которые создаются исполняемым файлом java, его собственными библиотеками или собственными библиотеками приложения.
  • Существует память, используемая для представления стеков потоков Java.
  • И, возможно, есть еще.

Не существует рекомендуемого способа прогнозирования общего использования памяти приложением Java.Даже измерить это непросто, особенно если учесть, что часть этой памяти может использоваться совместно с другими JVM или даже другими приложениями, не относящимися к Java.

1 голос
/ 17 июля 2010

Из вашего вопроса я вижу, насколько вы озадачены управлением памятью в Java.

Пожалуйста, ознакомьтесь с этой статьей для лучшего понимания.http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...