3

Мне нужна моя точка доступа Oracle, чтобы выбросить исключение java.lang.OutOfMemoryError: GC overhead limit exceeded гораздо раньше, чем с параметрами по умолчанию UseGCOverheadLimit.Настройка верхних верхних пределов на верхнем пределе

По умолчанию OOME возникает, когда более 98% времени отводится в GC и восстанавливается менее 2% кучи (описано http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc.oom).

Например, мне нужна моя JVM, чтобы выбросить OOME, когда более 20% времени тратится на GC. К сожалению, -XX:GCTimeRatio=nn не подходит.

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

ответ

1

По умолчанию OOME происходит, когда более 98% времени тратится на GC и менее чем 2% от кучи извлекают

Эти два значения настраиваются через GCHeapFreeLimit и GCTimeLimit

GCTimeRatio определяет только мягкую цель, для которой эвристика GC оптимизируется.

+0

Спасибо! Так грустно, что я не смог это сделать ... –