У моей установки Glassfish течет память? - PullRequest
2 голосов
/ 01 августа 2011

У меня на сервере Glassfish v3 запущено несколько веб-приложений (сервлеты, JSP, JDBC).Я заметил, что, если я позволю Glassfish работать долго, он будет использовать всю доступную память (это работает на сервере с 750 МБ памяти).

Я подумал, что должно бытьутечка памяти, поэтому я запустил сервер, наблюдая за ним с помощью JProfiler, и заметил, что, когда я получаю пик трафика, мое использование памяти возрастает (как и ожидалось), но затем быстро снижается.

I 'Мне интересно, если проблема не в утечке памяти, а в том, что Glassfish увеличивает размер кучи при возникновении пиков (это, похоже, происходит), но никогда не уменьшает размер кучи при снижении фактического использования памяти.

Graph of heap for Glassfish

Однако, исходя из этого графика, кажется, что использование памяти (синее) имеет тенденцию к увеличению , поскольку сервер работает дольше.

Мой вопросв два раза:

  1. Есть ли способ уменьшить размер кучи, когда фактическое использование памяти падает после скачка?

  2. вполне вероятно, что яесть утечка памяти, или это нормально?Что я могу сделать для дальнейшего изучения использования этой памяти?

Ответы [ 2 ]

1 голос
/ 01 августа 2011

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

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

1 голос
/ 01 августа 2011

Для 1. Нет способа сделать это.

Для 2. вы можете использовать VisualVm , чтобы увидеть, где вы на самом деле используете память.

...