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