Как оптимизировать JVM, чтобы использовать меньше ресурсов - PullRequest
1 голос
/ 09 февраля 2011

Я использую Apache tomcat 7.02 в качестве сервера. Я создал приложение, используя sphinx4, и развернул его на сервере apache tomcat. Так как для этого приложения Sphinx4 требуется много памяти для выполнения. Для этой цели я выделил много памяти как java Пространство кучи (экспорт CATALINA_OPTS = "- Xms1536m -Xmx1536m"). Сервер, на котором я развернул сервер, - это 64-битная система с Debian Lenny и 2 ГБ оперативной памяти. Я создал сервлет, разместил на нем данные, получил результаты ... Когда я запускаю его для 10 пользователей, обработка занимает около 8 минут, но если я запускаю его для 100 пользователей одновременно, то он показывает это в состоянии tomcat

Свободная память: 37,0 МБ. Общая память: 1484,81 МБ Макс. Память: 1484,81 МБ

Я также пытался использовать System.gc (), но это не помогло. Так есть ли способ проверить состояние памяти JVM и освободить его при необходимости?

1 Ответ

4 голосов
/ 09 февраля 2011

Вам необходимо определить, где используются ресурсы. Я предлагаю вам использовать профилировщик памяти и изменить программу, чтобы она занимала меньше памяти.

Если вы используете 64-битную JVM, вы можете использовать -XX:+UseCompressedOops для сокращения потребления памяти (вместо 64-битных ссылок используются 32-битные ссылки)

РЕДАКТИРОВАТЬ: Если вы не можете настроить приложение, возможно, стоит подумать об обновлении вашего сервера. Сервер на 24 ГБ может стоить около 1800 фунтов стерлингов и может позволить вам масштабировать до 1000 пользователей без изменения кода. ;)

...