Какие условия не позволят JVM запустить полную сборку мусора? - PullRequest
2 голосов
/ 13 августа 2010

Какие условия могут помешать JVM запустить полную сборку мусора, когда загрузка процессора составляет 5–8%?

Я вижу постоянный неглубокий цикл GC, но не могу настроить JVM нахочу запустить FULL GC.

Куда мне обратиться, чтобы найти условия, когда JVM говорит: «Я слишком занят, чтобы бежать».

Ответы [ 3 ]

7 голосов
/ 13 августа 2010

Когда я готовился к сертификации SCJP, большое внимание уделялось

"Вы не можете сделать ничего , чтобы заставить GC для запуска в любой момент времени вы можете просто намеки на это "

Идея автоматического GC в целом не сводится к тому, чтобы беспокоиться о том, как или когда он работает для очистки свободной памяти. Таким образом, нет никакого способа изменить то, когда или как на самом деле работает GC ... вам придется заново реализовать одну JVM, чтобы делать то, что вы хотите.

В этом так много факторов, что могут быть и другие, более изящные решения.

3 голосов
/ 13 августа 2010

Это полностью зависит от алгоритма сборщика мусора, который вы используете в вашем конкретном JDK. Все, что вы можете гарантировать в отношении сборки мусора, это то, что если JVM выдает OutOfMemoryError, сборщик мусора приложил все усилия, чтобы собрать каждый недостижимый / слабодоступный объект. Даже System.gc() ничего не гарантирует, бездействие - полностью легальная реализация.

Следовательно, в этом свете я не знаю, имеет ли ваш вопрос какой-либо вес. Если вы действительно верите, что вам нужно настроить сборщик мусора, это поможет, если вы опубликуете проблемы, с которыми вы столкнулись, и данные профилирования, которые заставят вас поверить, что проблема заключается в низкой производительности GC.

Помимо этого, сборщик мусора должен рассматриваться как черный ящик. Логика его реализации на удивление сложна, и есть очень хороший шанс, что он лучше вас знает, что он должен делать в любой момент времени. 99 из 100 попыток заставить сборщик мусора вести себя особым образом снизят производительность, а не увеличат ее.

2 голосов
/ 13 августа 2010

Дело не в том, что он занят, но просто не требует дополнительной памяти.

...