Превышен лимит накладных расходов GC

Какое время выборки JVM использует для выдачи 'java.lang.OutOfMemoryError: Превышен лимит накладных расходов GC'? Я знаю, что вы можете контролировать 98% и 2% с помощью параметров GCTimeLimit и GCHeapFreeLimit, но каково время выборки?

92 голоса | спросил PRK 7 TueEurope/Moscow2010-12-07T01:18:51+03:00Europe/Moscow12bEurope/MoscowTue, 07 Dec 2010 01:18:51 +0300 2010, 01:18:51

1 ответ


0

Из настройки виртуальной машины Java SE 6 HotSpot [tm]

следующее

  

Чрезмерное время GC и OutOfMemoryError

     

Параллельный сборщик сгенерирует OutOfMemoryError, если слишком много   время тратится на сборку мусора: если более 98%   общее время затрачивается на сборку мусора и составляет менее 2%   куча восстановлена, OutOfMemoryError будет брошен. Эта особенность   предназначен для предотвращения запуска приложений в течение длительного   Период времени, делая мало или нет прогресса, потому что куча   слишком маленький. При необходимости эту функцию можно отключить, добавив   вариант   -XX: -UseGCOverheadLimit для командной строки.

     

Политика такая же, как в параллельном коллекторе, за исключением того, что   время, потраченное на выполнение одновременных сборов, не засчитывается в   98% времени. Другими словами, только коллекции выполнены в то время как   приложение остановлено в счет чрезмерного времени GC. такие   коллекции обычно происходят из-за сбоя одновременного режима или   явный запрос на сбор (например, вызов System.gc ()).

в сочетании с проходом внизу

  

Одно из наиболее часто встречающихся применений явного мусора   Сбор происходит с помощью распределенной сборки мусора RMIs (DGC).   Приложения, использующие RMI, ссылаются на объекты в других виртуальных машинах.   Мусор не может быть собран в этих распределенных приложениях без   иногда собирать локальную кучу, поэтому RMI вызывает полные коллекции   периодически. Частота этих коллекций можно контролировать   со свойствами. Например,

java -Dsun.rmi.dgc.client.gcInterval=3600000
     

-Dsun.rmi.dgc.server.gcInterval=3600000 указывает явный сбор один раз в час вместо значения по умолчанию один раз в час.   минута. Тем не менее, это также может привести к тому, что некоторые объекты будут занимать гораздо больше времени   быть исправленным. Эти свойства могут быть установлены до Long.MAX_VALUE   сделать время между явными коллекциями фактически бесконечным, если   нет никакого желания для верхней границы своевременности DGC   деятельность.

Похоже, подразумевается, что период оценки для определения 98% длится одну минуту, но его можно настроить на JVM от Sun с правильным определением.

Конечно, возможны и другие интерпретации.

ответил Edwin Buck 7 TueEurope/Moscow2010-12-07T01:43:50+03:00Europe/Moscow12bEurope/MoscowTue, 07 Dec 2010 01:43:50 +0300 2010, 01:43:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132