Я пытаюсь запустить Tomcat в системе с низким объемом памяти (150-256 МБ). Несмотря на то, что я запускаю JVM с -Xmx64m (который должен быть по умолчанию в любом случае), этот процесс сразу же занимает 200Mb +.
Интересно, зачем JVM так много памяти, или есть способ настроить это? Другие JVM лучше, чем солнечные, для низкого потребления памяти - и работают ли они с tomcat?
С опцией -Xmx вы ограничиваете размер кучи , резервируемой JVM ... Существуют дополнительные ресурсы, в которых нуждается JVM ...
«Спасибо за память» * - хорошая статья, которая объясняет, как JVM использует память ...
Кроме того, вы можете попробовать IBM JVM, она должна работать с Tomcat, не знаю, работают ли некоторые из бесплатных реализаций JVM.
Тем не менее, я не думаю, что машина с таким низким объемом памяти пойдет вам на пользу. Java просто нужна память.
* Поскольку новые пользователи не могут отправлять гиперссылки, вам нужно самостоятельно поискать эту статью ... она впервые попала в Google на "спасибо за память ibm".
источник
Также попробуйте JVM JRockit, который занимает меньше памяти. Вы все еще можете скачать лицензионные версии BEA JRockit бесплатно. то есть версии до того, как Oracle принял BEA.
См. Http://forums.oracle.com/forums/thread.jspa?threadID=816133&tstart=0 ссылки для загрузки.
источник
Одна полезная техника, которую я нашел, состоит в том, чтобы использовать мониторинг JMX, чтобы точно определить, сколько памяти используется пространством кучи против permgen.
Настройте JMX в Tomcat, как описано здесь http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
Затем используйте JConsole (поставляется с JDK 5 или JDK 6) - тег памяти будет отслеживать потребление памяти с течением времени.
Также - остерегайтесь мягких перезапусков веб-приложений. Если вы перезагрузите веб-приложение, пространство permgen не будет собирать мусор и будет расти со временем. Вам нужно сделать полную остановку / запуск Tomcat, чтобы освободить пространство permgen.
источник