Вопрос по java, jvm – Оценка максимального безопасного размера кучи JVM в 64-битной Java

7

В ходе профилирования 64-битного Java-приложения, которое имеет некоторые проблемы, я заметил, что сам профилировщик (YourKit) использует действительно колоссальные объемы памяти. То, что я получил в сценарии запуска YourKit:

JAVA_HEAP_LIMIT="-Xmx3072m -XX:PermSize=256m -XX:MaxPermSize=768m"

Наивно, принимая на себя некоторые накладные расходы, это привело бы меня к предположению, что YourKit будет использовать максимум чего-то, возможно, чуть более четырех ГБ. Тем не менее, что я на самом деле вижу в PS это:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
dmoles   31379  4.4 68.2 14440032 8321396 ?    Sl   11:47  10:42 java -Xmx3072m -XX:PermSize=256m -XX:MaxPermSize=768m -XX:+HeapDumpOnOutOfMemoryError -Dyjp.probe.table.length.limit=20000 -Xbootclasspath/a:/home/dmoles/Applications/yjp-9.5.6/bin/../lib/tools.jar -jar /home/dmoles/Applications/yjp-9.5.6/bin/../lib/yjp.jar

Это виртуальный размер почти 14 ГБ и резидентный размер почти 8 ГБ - почти в 3 раза больше, чем куча Java.

Теперь у меня достаточно памяти на моем устройстве для разработки, но возвращаясь к исходной проблеме с памятью, которую я пытаюсь диагностировать: как узнать, сколько кучи Java мне нужно играть?

Ясно, что если у клиента есть, скажем, 16 ГБ физической ОЗУ, мне не стоит предлагать ему установить-Xmx до 16 ГБ.

И чтоis разумное число? 12 Гб? 8 Гб?

И как мне это оценить?

Ваш Ответ

1   ответ
9

s not a great idea for me to tell them to set -Xmx to 16 GB.

Если клиент не запускал ничего более значимого на своей машине, то установка размера кучи равной 16G не являетсяnecessarily плохая идея Это зависит от того, что делает приложение.

So what is a reasonable number? 12 GB? 8 GB?

Идеальным числом было бы иметь «максимальную кучу JVM + непроизводительные издержки JVM + ОС + другие активные приложения»; рабочие наборы + буферный кэш рабочий набор & quot; добавьте к количеству физической памяти. Но проблема состоит в том, что ни один из этих компонентов (кроме максимального размера кучи) не может быть закреплен без подробных измерений на компьютере клиента ... пока приложение работает на реальной проблеме.

And how do I estimate it?

Суть в том, что вы не можете. Лучшее, что вы можете сделать, это угадать ... и быть консервативным.

Альтернативный подход заключается в оценке того, сколько кучи действительно нужно приложению для решения проблемы, которую оно пытается решить. Затем добавьте дополнительные 50 или 100 процентов, чтобы освободить место для эффективной работы ГХ. (А потом настроиться ...)

Error: User Rate Limit Exceeded David Moles
Error: User Rate Limit Exceeded David Moles
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceededthe tragedy of thread happiness.
Error: User Rate Limit Exceeded David Moles

Похожие вопросы