JVM Tenured / Old gen достиг предела и зависает сервер

Нашему приложению требуется очень большой объем памяти, так как оно работает с очень большими данными. Поэтому мы увеличили максимальный размер кучи до 12 ГБ (-Xmx).

Ниже приведены сведения о среде.

OS - Linux 2.6.18-164.11.1.el5    
JBoss - 5.0.0.GA
VM Version - 16.0-b13 Sun JVM
JDK - 1.6.0_18

У нас есть вышеупомянутые параметры env & configuration в нашем QA & prod. В QA у нас есть максимальный размер PS Old Gen (память кучи), выделенный как 8,67 ГБ, тогда как в Prod это всего 8 ГБ.

В Prod для конкретного задания Old Gen Heap достигает 8 ГБ, зависает там, и веб-URL становится недоступным. Сервер выходит из строя. Но в QA он также достигает 8,67 ГБ, но выполняется полный сборщик мусора и возвращается к 6,5 ГБ или что-то в этом роде. Здесь его не повесят.

Мы не смогли придумать решение для этого, потому что и среда, и конфигурация на обоих устройствах одинаковы.

У меня здесь 3 вопроса,

2/3 максимальной кучи будет выделено старый / постоянный ген. Если это так почему это 8ГБ в одном месте и 8,67ГБ в другом месте?

Как обеспечить правильное соотношение для Новых и владение в данном случае (12 ГБ)?

Почему он полностью собран в одном месте и не в другом?

Любая помощь была бы действительно заметна. Спасибо.

Пожалуйста, дайте мне знать, если вам нужна дополнительная информация по env или conf.

22
задан raksja 10 May 2011 в 04:42
поделиться