2010-07-04 2 views
0

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

Заранее спасибо, Alex

ответ

0

ли вы попробовать Profiler как YourKit?

+0

Нет, я не пробовал профайлер. – Alex

0

Виртуальная машина Java будет использовать определенное количество дополнительной памяти для внутренних целей домашнего хозяйства - это link может помочь:

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

Смежные вопросы