сервер Windows 2003 - VisualGC в VisualVm Не поддерживается для этой JVM (jdk 1.7)

Когда я пытаюсь увидеть visualGC в VisualVm, он говорит: «Не поддерживается для этой JVM», и решение, которое я нашел, это

run jstatd -J-Djava.security.policy=tools.policy

и когда я запускаю эту команду, я получаю

C:\Program Files\Java\jdk1.7.0_45\bin>jstatd -J-Djava.security.policy=to
Could not create remote object
access denied ("java.util.PropertyPermission" "java.rmi.server.ignoreSubClasses"
 "write")
java.security.AccessControlException: access denied ("java.util.PropertyPermissi
on" "java.rmi.server.ignoreSubClasses" "write")

Решением этой проблемы является ссылка на оракул jstatd, но эта ссылка говорит
It is not currently available on the Windows 98 and Windows ME platforms

Я пытаюсь подключиться с локальной машины к удаленному серверу. Windows2003 JDK 1.7 — это то, что я использовал для VisualVM и Visual GC.

пожалуйста помоги!


person Learner    schedule 12.11.2013    source источник
comment
Вы также создали соответствующий файл tools.policy?   -  person Holger    schedule 12.11.2013
comment
да тоже так делал. опять же с помощью интернета/гугла/СО   -  person Learner    schedule 12.11.2013


Ответы (1)


Проблема была немного другой, причина, по которой я получаю «Не поддерживается для этой JVM», заключается в том, что приложение, которое я хочу профилировать, является службой Windows, поэтому на вкладке visualGC отображается «Не поддерживается для этой JVM». Что мы сделали, так это взяли файл .exe и запустили его на консоли с параметром -run в качестве параметра, и он запустился как обычное приложение Java и, таким образом, смог увидеть вкладку VisualGC.

Я сомневаюсь, что мы не запускали jstatd (мое приложение работало как служба Windows на сервере Windows 2003), так почему же мы можем просматривать VisualGC, вопреки тому, что я вижу в Интернете, и в соответствии с тем, что я написал в моем вопросе

person Learner    schedule 12.11.2013
comment
Вам не нужен jstatd для локальных JVM, и даже для сетевых подключений есть возможность создавать JMX-соединения без него. Но если ваше приложение работает как служба, оно обычно работает под другой учетной записью пользователя. Таким образом, обычный пользователь не может подключиться к нему через локальное обнаружение JVM из соображений безопасности. - person Holger; 12.11.2013