2013-12-14 4 views
3

У меня есть приложение Java, и я хочу отслеживать его с помощью Java VisualVM (jvisualvm).Отсутствие Java VisualVM объектов

Однако в окне VisualVM можно увидеть очень мало данных. Кроме того, я не могу взять кучу кучи.

Вот скриншот того, что он выглядит, с другой тест-приложение, которое я написал:

screenshot

Я могу контролировать использование памяти, классы загружаются и нити. Отвалы кучи, выполнение GC, а также выборки отключены.

Я попытался добавить -Dcom.sun.management.jxmremote в аргументы VM, как описано here. Это отображается в окне «Сведения об установке». Однако он не появляется в аргументах процесса Java. (Должен ли?)

screenshots

Я также попытался нажать на кнопку в моем тестовом приложении, пока OutOfMemoryError не произошло. Нет свалки кучи; это не странно, так как куча дампа на OOME отключена.

Что мне делать, чтобы решить эту проблему?

+0

Вы можете взять кучу кучи в визуальной виртуальной машине. – assylias

+0

Я говорю о том, что работает кнопка «Куча дампа». Обратите внимание, однако, что для больших куч (скажем> 500 МБ/1 ГБ) потребуется некоторое время. Вы можете попробовать его с небольшой кучей, чтобы подтвердить, что она работает. – assylias

+0

@assylias Как вы можете видеть на картинке, кнопка отключена, greyed out, not enabled, что вы хотите назвать. Вы даже не можете щелкнуть по нему, так что я не понимаю, как он работает. – Pietu1998

ответ

2

Кажется, что возникла проблема с различными версиями Java.

Длинная короткая история: Если J устарела повторно установить его и удалить Java исполняемые файлы из C:\Windows\System32 и C:\Windows\SysWOW64.

Во-первых, я хочу сказать вам, что у меня есть несколько версий Java на моем компьютере. Мой JDK 32-разрядный из-за того, что некоторые драйверы не работают с 64-разрядной Java. Кроме того, у меня установлены 32-разрядная и 64-разрядная JRE, последняя для лучшей производительности для игр Java.

Мой JDK был версией 7, обновил 40. VisualVM был так же и той версией. Тем не менее, мой JRE с автоматическими обновлениями был версии 7, обновление 45.

java -version сказал мне, что это была версия 45 (это было), поэтому я не думал, что проблема была там.

Затем я проверил версии с помощью панели управления. Теперь я знал, что мой JDK устарел, поэтому я удалил его и перезапустил.

Удаление удаленной Java из системного пути, поэтому jvisualvm не запускался. Я добавил его на путь. Теперь и приложение, и VisualVM запускались нормально, но проблема продолжалась.

Последняя проблема заключалась в том, что система использовала java.exe от C:\Windows\System32 вместо JDK. К дате она показалась последней, но, возможно, это было то, что JRE была установлена ​​в другом месте, где VisualVM (= JDK).

Наконец, я просто удалил исполняемые файлы Java как в C:\Windows\System32, так и в C:\Windows\SysWOW64.

+6

Я думаю, что это можно суммировать следующим образом: вы использовали visualvm с помощью jre, когда вы должны были использовать jdk (тот же, где был установлен visualvm). – eis

+1

@eis Абсолютно. – Pietu1998

3

У меня была эта проблема, потому что я запускал JVisualVM из другой установки JRE/JDK, чем целевой процесс. Кажется, что они должны быть с одного и того же места, или они выходят из кнопки «Куча дампа».

Смежные вопросы