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 недостаточно памяти. Я видел это много раз. Пытаться:
- увеличение пределов памяти.
- Подключите VisualVM к jvm.
- Разверните ваше приложение.
- И запустите сэмплер памяти, профилировщик или дамп кучи для диагностики проблемы. Возможно, у вас утечки памяти. Дамп кучи - самый безопасный путь, если у вас есть проблемы с памятью. Вы также можете взять дамп кучи с помощью командной строки и позже проанализировать его в VisualVM.
Также убедитесь, что вашей системе не хватает памяти.