четверг, 28 ноября 2013 г.

JVisualVM: Local Applications Cannot Be Detected


В один момент мне понадобилось отпрофилировать свое приложение. Но не тут то было, выскочило окошко о том, java приложения не могут быть найдены.
Перейдя по ссылке http://visualvm.java.net/troubleshooting.html#jpswin обнаруживаем необходимую справочную информацию.


Local Applications Cannot Be Detected (Error Dialog On Startup)

Description: An error dialog saying that local applications cannot be detected is shown immediately after VisualVM startup.
Resolution:  This can happen on Windows systems, it's caused by misconfigured jvmstat technology used to detect the running applications. There are two possible causes:
  • Insufficient permissions for %TMP%\hsperfdata_username folder - make sure you're able to create a file in the directory and eventually update the permissions for full folder access. Alternatively you can just re-create the folder which should automatically set the correct access rights. See see this forums.sun.com thread for more details.
  • Having %TMP%\hsperfdata_username folder on a FAT disk - by default jvmstat doesn't work on FAT disks due to security restrictions. You can bypass the security check by setting the -XX:+PerfBypassFileSystemCheck flag for both VisualVM and the monitored application. See the JDK bug #5042659 for more details.


Понятно, что у меня не FAT система, все-таки 21 век на дворе. Остается из описания, что у меня не хватает прав на директорию hsperfdata_username.
Что-то частенько стало не хватать прав в Windows 7, не правда ли? :)

Смотрим, где эта папка лежит:

Microsoft Windows [Version 6.1.7601] (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены. C:\Users\anteastra>jvisualvm C:\Users\anteastra>echo %TMP% C:\Users\ANTEAS~1\AppData\Local\Temp C:\Users\anteastra>

Отлично! Теперь добавим права для этой директории на запись нужной группе в свойствах папки->безопасность.

Тут же запуская jVisualVM, никаких java приложений, кроме самой jVisualVM, мы не увидим. Потому что при запуске java процесса в эту директории создается файл с именем id процесса, если есть такая возможность. Соответсвенно, наши томкаты и эклипсы придется перезапустить :)

Приятного профайлинга!

2 комментария:

  1. У меня права для директории на запись были для всех групп. Да и файловая система не FAT. Однако с этим все-равно столкнулся.. Есть предложения, что делать?

    ОтветитьУдалить
    Ответы
    1. При запуске java приложений в директории %TMP%\hsperfdata_username появляются ли файлы? Если да, то тогда может быть у самого jvisualvm есть проблемы с доступом?
      Во втором случае стоит запускать приложение с правами администратора.
      Такие предложения

      Удалить