Я пытаюсь профилировать сервлет, работающий в Apache Tomcat (7.0.34), как службу в Windows 7 (64-разрядная версия), используя JVisualVM (JDK 1.7.0-06, 64-разрядная версия), работающую локально.
Первоначально у меня была проблема с тем, что Tomcat не отображался в списке локальных приложений из-за отличающейся ошибки/функции свойства «java.io.tmp», но я работал над этим, как советовали в нескольких сообщениях на этом форуме.
Однако, хотя процесс Tomcat теперь отображается в списке локальных приложений как «Локальное приложение», когда я открываю процесс, вкладки «Монитор», «Потоки», «Сэмплер» или «Профиль» отсутствуют — только вкладка «Обзор», для которой аргументы JVM и подраздел «Свойства системы» -tabs показывает страшное сообщение «не поддерживается для этого jvm».
Я дважды проверил следующие пункты:
- что и Tomcat, и JVisualVM используют одну и ту же версию Java, просматривая свойства JVM в JVisualVM (используя соединение JMX для Tomcat)
- что и Tomcat, и JVisualVM имеют один и тот же путь «java.io.tmp», просматривая свойства системы в JVisualVM (снова используя соединение JMX для Tomcat) И просматривая фактический каталог TMP/TEMP и подтверждая, что файлы PID для обоих существует
- что файловая система NTFS
- что у пользователя Windows нет подчеркивания в имени (Примечание: у пользователя есть точка в имени, поскольку мы используем сетевые логины в форме «имя.фамилия», однако у меня нет проблем с просмотром других приложений Java в JVisualVM так что не думаю, что это проблема)
- что и Tomcat, и JVisualVM выполняются как один и тот же пользователь Windows, просматривая процессы в диспетчере задач
Пара заключительных моментов:
- Мне нужно профилировать сервлет, поэтому использования JMX недостаточно.
- Я смог профилировать на машине с Windows XP (Java 7, Tomcat 7 в качестве службы), так что это будет похоже на Windows 7 / 64-битную вещь?
Если кто-то имел и решил эту проблему, очевидно, решение будет высоко оценено. Однако было бы полезно просто знать, используют ли другие люди ту же конфигурацию — 64-разрядную версию Windows 7, 64-разрядную версию Java 7, Tomcat 7, работающий как службу — успешно.
Обновление: вместо того, чтобы работать как служба, я запустил Tomcat с помощью пакетного файла, и все заработало отлично: что насчет работы как службы?