Конфигурация JVM в 64-битном Linux - PullRequest
0 голосов
/ 04 июля 2010

У меня есть серверное приложение, которое работает на 64-битном сервере Ubuntu с 4 ГБ ОЗУ. Когда я устанавливаю параметры конфигурации JVM (мы используем Sun JVM 1.6) следующим образом: -Xms1024m -Xmx2560m, я вижу странное распределение памяти при запуске приложения (оно работает на Tomcat 6). Команда top в Ubuntu показывает, что размер виртуальной памяти составляет почти 3,2 ГБ. Я не понимаю, выделяла ли Ubuntu память, которую я запрашивал при запуске JVM, или, может быть, Ubuntu добавляет подкачку части к значению -Xmx, и, таким образом, я получаю этот большой размер. Если я запускаю 32-битный сервер Ubuntu и настраиваю -Xmx1536m, я вижу 1721m при запуске команды top. Кто-нибудь может объяснить мне, что это за дельты и когда они появились? У меня запущены другие процессы в этих экземплярах, и я хочу понять, какую конфигурацию памяти я должен применить к ним, принимая во внимание результаты команды top в Ubuntu.

Спасибо заранее, Alex

Ответы [ 2 ]

0 голосов
/ 12 июля 2010

JVM будет использовать определенный объем дополнительной памяти для внутренних служебных целей - эта ссылка может помочь:

Обратите внимание также, что постоянное поколение прикреплено к концуСтарое поколение.Также имеется небольшой кэш-код объемом 50 Мб для управления внутренней памятью JVM.Это означает, что общий начальный размер кучи = ‐Xms + ‐XX: PermSize + ~ 50Mb и что максимальный общий размер кучи = ‐Xmx + ‐XX: + MaxPermSize + ~ 50Mb.Например, если для –Xms / –Xmx установлено значение 512 м, а для –XX: PermSize / MaxPermSize установлено значение 128 м, то общая виртуальная машина будет иметь размер около 700 МБ.

0 голосов
/ 04 июля 2010

Вы пробовали профилировщик как Yourkit?

...