2012-03-05 3 views
5

Могу ли я задуматься о проблеме с памятью?Потребление памяти для веб-приложения java (300 МБ слишком высокое?)

Приложение java, которое не является огромным (например, 14000 LOC), использует около 300 МБ памяти. Он работает на Tomcat с базой данных MySQL. Я использую Hibernate, Spring и Velocity.

У него, кажется, нет утечек, поэтому он стабилизируется и 300 МБ, без дальнейшего увеличения. (Кроме того, я сделал некоторые профилирования.) Однако у моей команды была определенная озабоченность по поводу объема пространства, которое он использует. Это кажется высоким. Есть ли у вас какие-либо предложения по его сокращению?

Любые мысли приветствуются.

Джо

+2

Ваш вопрос не содержит достаточной информации, чтобы мы могли сформулировать полезные ответы. Использование памяти напрямую не связано с LOC; это зависит от того, что вы делаете в этих строках. Нам нужно будет увидеть код и/или хорошее описание функциональности, чтобы они могли разумно отвечать. –

+0

Какую информацию я могу вам предоставить? – Joe

+0

Как сжать это, потребуется анализ кода. По крайней мере, мне это кажется нелепо высоким. Мой веб-сервер и eclipse вместе (два java-процесса) работают около 1gig памяти. Наш веб-сервис - это огромное количество строк, хотя ... – kand

ответ

4

Количество LOC не является показателем того, сколько кучи приложение Java будет использовать; нет корреляции от одного к другому.

300MB не особенно велик для серверного приложения, которое кэширует данные, но оно несколько велико для приложения, которое не хранит какие-либо кешированные или сеансовые данные (но поскольку это включает в себя сам веб-сервер, 300 МБ, как правило, разумно).

2

Объем кода (LOC) редко оказывает значительное влияние на использование памяти вашего приложения, в конце концов, это переменные и объекты, которые занимают большую часть памяти. Для меня 300 мегабайт мало чем отличается, но, конечно, это зависит от вашего конкретного сценария использования:

  • Сколько памяти имеет сервер производства?
  • Сколько пользователей работает с этим объемом памяти?
  • Сколько стоит использование памяти за сеанс пользователя?
  • Сколько пользователей вы ожидаете быть одновременно Доступ к приложению в производстве используется?

Исходя из этого, вы можете выполнить некоторые вычисления, например. ваша производственная среда готова обрабатывать количество пользователей, которых вы ожидаете, вам нужно больше оборудования, вам, возможно, потребуется сериализовать некоторые данные на диск/db и т. д.

0

Я не могу делать никаких обещаний, но я не знаю, Думаю, вам нужно волноваться. Мы запускаем пару веб-приложений при работе через Glassfish, используя спящий режим, а каждый из них использует около 800-900 МБ в dev, часто будет иметь 2 домена, выполняющих каждый из этих размеров.

+0

Все они также являются производственными приложениями, которые отсутствовали в течение 2 лет –

0

Если вам нужно уменьшить свой след, по крайней мере убедитесь, что вы используете Velocity 1.6 или выше. 1.5 потерял справедливый бит памяти.