У меня есть экземпляр Tomcat, который проявляющий следующее поведение:Как исследовать коллекцию чрезмерной явы мусора
- Accept один HTTP входящего запроса.
- Задайте один запрос на серверный сервер и верните около 400 килобайт XML.
- Пройдите через этот XML и преобразуйте его в 400 КБ JSON.
- Верните ответ JSON.
Проблема заключается в том, что при обработке запроса 400k мой webapp генерирует около 100 мб мусора, который заполняет пространство Эдена и запускает коллекцию молодого поколения.
Я попытался использовать встроенную функциональность jpro hprof для профилирования сайтов распределения, но Tomcat, похоже, не начал правильно работать с этим. Возможно, я был немного нетерпелив, так как, по-моему, профилирование распределения памяти имеет высокие накладные расходы, поэтому запуск tomcat может занять много времени
Каковы наилучшие инструменты для использования профилей java-памяти для очень молодых объектов/мусор? Я не могу использовать кучи кучи, потому что объекты, которые меня интересуют, это мусор.
Профилирование Jvisualvm затруднено, так как мой сервер tomcat работает на linux, и я предпочел бы избежать необходимости запуска его в Windows, где я делаю свою разработку или устанавливаю Linux-ящик gui. – mchr
Установите соответствующий JDK на Linuxbox и перенаправьте jvisualvm для использования сервера X11, работающего на вашем окне. Xming прямо на машине, или Knoppix, работающий на сеансе vmware, работает очень хорошо. –
Также обратите внимание, что если вы добавите соответствующее voodoo для вызова JVM Tomcat, jvisualvm может подключаться из вашей Windowsbox без дальнейшего прощания. –