Помогите с действительно странным поведением Java GC - PullRequest
1 голос
/ 21 апреля 2009

У меня есть веб-приложение на Java, работающее на JBoss за Apache (через mod_jk), и я вижу действительно странное поведение GC. Я приложил график этого вопроса. Кто-нибудь видел подобное поведение GC раньше? Это Java 6, работающая с настройкой GC по умолчанию из эргономики на машине серверного класса. Спасибо.

image

NOTE: The above image is a link to the full-size version. The graph was generated using GCViewer .

Ответы [ 2 ]

5 голосов
/ 21 апреля 2009

Кажется, проблема в том, что система не может восстановить достаточно памяти даже после полной сборки мусора. Это также отрицательно сказывается на продвижении объектов в оставшиеся в живых и оставшиеся в живых пространства, которые там на самом деле не принадлежат.

Размер старого поколения должен уменьшиться со временем, большинство объектов (или, по крайней мере, должно быть) очень недолговечны. Если вы обнаружите, что старое поколение продолжает расти, то где-то может быть утечка ресурсов. Из вашего графика кажется, что какое-то распределение переворачивает систему через край и превращает ее в спираль смерти.

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

0 голосов
/ 21 апреля 2009

Я вижу изображение, но не могу правильно прочитать его относительно того, что находится на осях X и Y. Я предполагаю, что частота GC увеличивается после некоторого времени работы JVM. Это может быть потому, что вы получаете больше нагрузки в это время. Если вы включили журналы GC, вы можете проверить, изменила ли JVM стратегию GC в середине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...