Возможно ли принудительно собрать мусор в Java, даже если это сложно сделать? Я знаю о System.gc(); и Runtime.gc();, но они только предлагают выполнять GC. Как я могу принудительно выполнить GC?
Переведено автоматически
Ответ 1
Ваш лучший вариант - вызвать System.gc() который просто является подсказкой сборщику мусора, что вы хотите, чтобы он выполнил сборку. Однако нет способа принудительно выполнить немедленную сборку, поскольку сборщик мусора недетерминирован.
/** * This method guarantees that garbage collection is * done unlike <code>{@link System#gc()}</code> */ publicstaticvoidgc() { Objectobj=newObject(); WeakReferenceref=newWeakReference<Object>(obj); obj = null; while(ref.get() != null) { System.gc(); } }
Ответ 3
Лучшим (если не единственным) способом принудительной сборки GC было бы написать пользовательскую JVM. Я полагаю, что сборщики мусора подключаемы, поэтому вы, вероятно, могли бы просто выбрать одну из доступных реализаций и настроить ее.