1

У меня есть приложение JBoss, работающее на платформе Linux, оно имеет максимальный вывод, как показано ниже (на самом деле не точные данные):

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM  CODE DATA TIME+  COMMAND
 1379 root      16   0  9.7g 1.6g 1980 S  0.7  1.3 36  9.7g 0:11.03 java

он имеет 1,6 г физической памяти и 9,7 г DATA. на самом деле размер кучи составляет ~ 128 м, как настроено с помощью JVM. мой вопрос, что такое хранение данных DATA для Java-приложения? какая-нибудь подсказка? и как я мог оптимизировать это?

спасибо Эмре

2 ответа2

1

DATA означает память, выделенную приложением с использованием brk(2) то есть расширение сегмента данных.

У Java есть много разных вещей, которые она поместит в сегмент данных:

  • Куча
  • Любая память, выделенная собственным уровнем времени выполнения (код с использованием ключевого слова native )
  • Любая память, выделенная DLL / разделяемыми библиотеками, загружаемая из Java с использованием JNI / JNA
  • Память, в которой байт-код загружается, интерпретируется и компилируется JIT (кеш кода)
  • Структуры памяти, используемые GC и другим кодом поддержки времени выполнения
  • Стек

Обратите внимание, что выделение программе 128 МБ кучи выделит больше, чем это, потому что Java также создаст некоторые структуры для управления кучей, которые не являются ее частью. Таким образом, 128 МБ означает, что у вас будет 128 МБ, в котором вы можете выделить объекты Java.

0

Это объем физической памяти, выделенный для другого, кроме исполняемого кода, также известного как размер «резидентного набора данных» или DRS. Как правило, вы можете обратиться к странице справочника, которая подробно описывает все столбцы. Чтобы получить справочную страницу, наберите man top .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .