Почему JCMD выдает сообщение "Отслеживание собственной памяти не включено", даже если NMT включен?

Я сталкиваюсь с этой странной проблемой. Я хочу отслеживать использование памяти JVM. Я следовал инструкциям, приведенным в документации Oracle, добавил флаг включения NMT и переработал JVM Tomcat. После этого, когда я попытался увидеть использование встроенной памяти с помощью JCMD, я получил сообщение "Отслеживание встроенной памяти не включено". Вы думаете, я что-то упустил?

Вот печать экрана

2 ответа

установить -XX:NativeMemoryTracking= подробно

Я столкнулся с той же проблемой. Предполагая, что вы столкнулись с этой проблемой в Linux-подобных ОС (например, RHEL); эта проблема возникает из-за того, что ОС по соображениям безопасности не позволяет любому идентификатору пользователя, кроме идентификатора пользователя, связанного с java-процессом, подключаться к jvm. Мне пришлось выполнить sudo с командой jcmd как пользователь процесса. В моем случае служба tomcat выполнялась как пользователь "userXXX". Я смог получить ответ от процесса Java, когда выполнил команду ниже.sudo -u userXXX jcmd {pid} Масштаб сводки VM.native_memory = КБ

Другие вопросы по тегам