VisualVM подключается к локальному TomEE очень медленно и не может взять дамп кучи

Я столкнулся с очень странной проблемой с TomEE 1.5.1 и VisualVM 1.7.0_09 на MAC OSX mountain lion.

После того, как TomEE загрузил какое-то веб-приложение. Использование VisualVM для подключения локального процесса TomEE занимает много времени, а после подключения кнопка gc отключена, и я не могу выполнить дамп кучи. журнал VisualVM'показывает некоторую ошибку.

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
    at sun.tools.attach.BsdVirtualMachine.<init>(BsdVirtualMachine.java:90)
    at sun.tools.attach.BsdAttachProvider.attachVirtualMachine(BsdAttachProvider.java:63)
    at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:213)
    at com.sun.tools.visualvm.attach.AttachModelImpl.getVirtualMachine(AttachModelImpl.java:104)
Caused: java.io.IOException: Unable to open socket file: target process not responding or HotSpot VM not loaded

.java_pid<pid> файл не создан в папке tmp.

Но если я использую VisualVM для подключения TomEE после его запуска и до загрузки любых веб-приложений, .java_pid<pid> файл будет создан, и VisualVM немедленно подключится к нему, и дамп кучи сработает.

Другой обходной путь - изменение catalina.sh, добавление tools.jar в ClassPath и удаление javaagent openejb, а затем подключение после полного запуска TomEE.

Не может воспроизвести на машине Ubuntu.

1 ответ

Возможно, у jvm недостаточно памяти. Я видел это много раз. Пытаться:

  1. увеличение пределов памяти.
  2. Подключите VisualVM к jvm.
  3. Разверните ваше приложение.
  4. И запустите сэмплер памяти, профилировщик или дамп кучи для диагностики проблемы. Возможно, у вас утечки памяти. Дамп кучи - самый безопасный путь, если у вас есть проблемы с памятью. Вы также можете взять дамп кучи с помощью командной строки и позже проанализировать его в VisualVM.

Также убедитесь, что вашей системе не хватает памяти.

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