Я знаю, что все собирает мусор. Но что именно сообщает JRE, что настало время для сбора мусора? Это как какое-то событие или временной интервал?Какие триггеры сбора мусора
ответ
Вы можете использовать System.gc();
, но нет гарантии, что он будет работать (он просто «предлагает» GC для запуска).
JVM имеет различные реализации, включая GC, которые могут быть запущены в разных режимах, и имеет очень сложные алгоритмы, которые обычно работают довольно хорошо, при этом, если у вас есть специальное использование (или специальные события, например, после перезапуска платформы) - вы можете настроить его using flags (например: минимальный размер кучи, максимальный размер кучи и т. д.), но даже без этого GC собирает объекты с нулевой ссылкой (указатели, указывающие на них) всякий раз, когда возникает необходимость свободная память из кучи.
объект имеет нулевую ссылку, после чего будет собран мусор. но GC не дает гарантии, как это делается.
HotSpot вырос в чрезвычайно сложное дело, что даже его создатели стремятся понять во всех деталях. Поэтому вам нельзя дать простой ответ; некоторые триггеры:
- занятие каждого поколения объектов, достигающее порога;
- запрос на распределение памяти в конкретном поколении отказ;
- общая занятость кучи, достигнув порога.
Обратите внимание, что вы даже не указано, что вид сбора мусора вы заинтересованы в: есть коллекция незначительные и набор а основных и технологически они очень разные. Вы также не указали, какой сборщик мусора вы имеете в виду: у HotSpot есть четыре из них на выбор.
Если вы новичок в Java, лучшим советом является а) в повседневном программировании, не беспокойтесь об этом; и b) если вы хотите учиться, вам нужно будет dig deep.
JVM управляет сборщиком мусора, он решает, когда запускать сборщик мусора. Он будет запускать GC, когда он осознает, что память работает на низком уровне, или объект становится пригодным для GC, когда нет в прямом эфире может получить к нему доступ.
Но это поведение JVM не может быть гарантировано, можно запросить GC из программы java, но нет гарантии, что этот запрос будет рассмотрен JVM.
Первая часть права, Java будет делать GC, когда память бежит низко. Но Java не знает, когда объект становится подходящим для GC (это решение принято в самой GC). Если используется маркер/стрелочный коллектор, он, конечно, будет отмечать мертвые объекты и при необходимости запускать их на них, но это часть GC. – pushy
@pushy: вы правы, я неправильно понял * когда * объект, подходящий для GC, и когда JVM * работает * GC, спасибо за примечание. – Azad
Сбор мусора в java происходит, когда JVM
считает, что сборку мусора необходимо на основе Java heap size.
Но вы можете заставить GC для сбора мусора с использованием
System.gc()
или
Runtime.gc()
Но это не гарантирует, что сборка мусора будет происходить.
Подробнее: http://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html#ixzz2Y9gKzQE1
Вы не «заставляете» сбор мусора. Как вы сами говорите: нет никакой гарантии. Я думаю, что ** просьба ** - лучшее слово здесь. –
- 1. Какие детерминированные алгоритмы сбора мусора есть?
- 2. Какие «точные» алгоритмы сбора мусора существуют?
- 3. побочные эффекты сбора мусора?
- 4. Сократите время сбора мусора
- 5. Стратегия сбора мусора Java
- 6. Списки сбора мусора
- 7. Параметры сбора мусора
- 8. Каковы объекты сбора мусора?
- 9. Задержка сбора мусора?
- 10. Предотвращение преждевременного сбора мусора
- 11. JVM алгоритм сбора мусора
- 12. избежать сбора мусора
- 13. System.gc() для сбора мусора
- 14. Сценарий сбора мусора Java
- 15. Алгоритм сбора мусора Java
- 16. context.detach - для сбора мусора
- 17. Время сбора мусора Java?
- 18. пропускная способность сбора мусора
- 19. Библиотеки сбора мусора
- 20. Методы асинхронного сбора мусора
- 21. Приемлемость сбора мусора
- 22. Отслеживание сбора мусора
- 23. сбора мусора внутри объекта блокировки
- 24. Как просмотреть журналы сбора мусора?
- 25. Как улучшить производительность сбора мусора?
- 26. Очень длительное время сбора мусора
- 27. Вопрос сбора мусора в какао
- 28. Алгоритм сбора мусора Xamarin Android
- 29. Журнал сбора мусора для groovy?
- 30. Резюме последнего десятилетия сбора мусора?
Наверняка кто-то спросил об этом раньше ... да. – Ben