Вопрос размера кучи Java / Tomcat - PullRequest
4 голосов
/ 03 марта 2011

Я не Java-разработчик, но приложение приземлилось на моем столе. Это серверное приложение веб-службы, которое запускается в контейнере Tomcat. Пользователи запускают его из клиентского приложения.

Пользователи постоянно жалуются на то, насколько он медленный, и приложение нужно перезапускать примерно два раза в неделю, потому что все становится действительно плохо.

Предыдущий разработчик сказал мне, что приложению просто не хватает памяти (поскольку оно загружает больше данных с течением времени) и в конечном итоге тратит все свое время на сборку мусора. Между тем, размер кучи для Tomcat установлен на 6 ГБ. Сама коробка имеет 32 ГБ оперативной памяти.

Есть ли вред в увеличении размера кучи до 16 ГБ?
Похоже, простой способ решить проблему, но я не эксперт по Java.

Ответы [ 5 ]

5 голосов
/ 03 марта 2011

Вы должны определить утечку и исправить ее, не добавляя больше места в куче. Это просто пробел.

Вы должны настроить tomcat на сброс кучи при ошибке, а затем проанализировать кучу одним из любых инструментов после сбоя. Вы можете вычислить оставшиеся размеры всех предложений, что должно дать вам очень четкое представление о том, что не так.

Я - мой профиль. У меня есть ссылка на пост в блоге по этому поводу, поскольку мне пришлось делать это недавно.

2 голосов
/ 04 марта 2011

Нет, увеличение размера кучи до 16 ГБ не повредит.

1 голос
/ 03 марта 2011

Я предлагаю вам использовать инструмент профилирования, такой как JProfiler, VisualVM, jConsole, YourKit и т. Д. Вы можете получить дамп кучи вашего приложения и проанализировать, какие объекты занимают память.

1 голос
/ 03 марта 2011

Для решения этих проблем необходимо выполнить тестирование производительности.Это включает анализ как процессора, так и памяти.JDK (6) объединяет инструмент под названием VisualVM, на моем компьютере с Mac OS X он по умолчанию находится в пути как "jvisualvm".Это бесплатно и в комплекте, так что это место для начала.

Далее следует NetBeans Profiler (netbeans.org).Это делает больше памяти и анализ процессора.Это также бесплатно, но немного сложнее.

Если вы можете потратить деньги, я настоятельно рекомендую YourKit (http://www.yourkit.com/). Это не очень дорого, но имеет много встроенных средств диагностики, которые облегчают егочтобы понять, что происходит.

Единственное, что вы не можете сделать, - это предположить, что простое добавление дополнительной памяти решит проблему. Если это утечка, добавление дополнительной памяти может просто сделать ее очень плохо работающей.дольше между перезапусками.

1 голос
/ 03 марта 2011

Предыдущий разработчик сказал мне, что приложению просто не хватает памяти (поскольку оно загружает больше данных с течением времени)

Это выглядит как утечка памяти , серьезная ошибка в приложении. Если вы увеличите объем доступной памяти с 6 до 16 ГБ, вам все равно придется перезапускать приложение, только реже. Некоторый опытный разработчик должен взглянуть на кучу приложений во время работы (посмотрите hvgotcodes tips) и исправить приложение.

...