Может кто-нибудь скажет мне, если мы будем собирать сборщик мусора параллельно, выполняя два потока, сколько объектов gc создаются?Сколько объектов коллектора Java Garbage Collector?
ответ
Там всегда только один сборщик мусора, который работает в нем собственный Thread
Там один сборщик мусора, как другие указали.
Вы не должны заботиться о количестве объектов сбора мусора
или о любых деталях о сборщике мусора. Это что-то
на уровне JVM/system. Все, о чем вы заботитесь, - это когда ящик явно вывожу мусор
(если вы хотите это сделать).
(Это ответ на комментарии Op, который раскрывающих природу недоразумение, которое в корне его вопроса см. Цитируемый текст ...)
да время выполнения одноэлементно, но когда мы вызывает Runtime.gc(), ...
Правильной
... виртуальная машина внутренне будет создан один поток, который мусор colletor (демон нить).
Неверный. Он не создает новый поток GC. Скорее, это заставляет поток существующей GC просыпаться и делать сборку мусора. Кроме того:
поток, вызывающий
gc()
не вернется, пока сборщик мусора не завершена.В зависимости от сборщика мусора, который был сконфигурирован, сборщик мусора может заморозить все остальные прикладные потоки перед началом сбора.
... но в этом случае, когда мы называем дс в двух разных потоков одновременно, сколько GC объекты будут созданы?
Отсутствует. Если два метода одновременно вызовет gc()
, GC будет выполняться один раз в существующей потоке GC. Подумайте о GC как о «двигателе», который либо работает, либо спит в любой момент времени. Вызов gc()
будет обычно заставляет GC запускаться, если он в данный момент находится в режиме сна.
(На самом деле, я упрощая вещи немного. CMS и G1 имеют сложность, что gc()
обычно работать параллельно с потоками приложений. Другая возможность состоит в том, что gc()
вызов будет просто проигнорирован. Наконец, GC типичный имеет множество способов: например, коллекцию молодого поколения и полную коллекцию. Вызов gc()
начнет полную сборку.)
...но мы говорим, что GC является демон нить
Да (вроде),
ГХ может иметь несколько потоков. Обычно имеется основной поток GC и другой поток для обработки финализации. И для некоторых видов GC некоторые задачи выполняются параллельно, используя пул потоков.
, а также дс() имеет встроенную реализацию
Для обычных виртуальных машин, да. (Но в качестве контр-примера, в JNode реализовано на Java, хотя и с использованием методов Unsafe
и т. Д.)
то что такое GC?
Это «материал», который делает сборку мусора. Что действительно происходит под капотом, зависит от JVM, и зависит от параметров JVM и т. Д.
отличная степен, спасибо. –
Кто бы ни проголосовал - пожалуйста, объясните сами. –
- 1. Java Garbage Collector method
- 2. Java Garbage Collector нечетное поведение
- 3. Libgdx forcing Garbage Collector
- 4. Garbage Collector Вопросы
- 5. VBA Garbage Collector Details
- 6. Garbage Collector и деструктор
- 7. Stack & Heap & Garbage Collector
- 8. Xcode: Garbage Collector Setting
- 9. H/W Assisted Garbage Collector
- 10. Garbage Collector поколения не Инкрементирование
- 11. Android Garbage Collector Freed Memory
- 12. ALLOCA и ObjectiveC Garbage Collector
- 13. Python Garbage-Collector и переменные класса
- 14. Python в C и Garbage Collector
- 15. Как работает Java7 Garbage-First Collector?
- 16. Garbage Collector уничтожает объекты из Interface Builder
- 17. C++ 11 Garbage Collector - Почему и Хоуз
- 18. VB.Net Dispose/Garbage Collector не освобождает ресурсы?
- 19. Разработка приложений для Android - Force Garbage collector
- 20. ссылочные типы Копирование и Garbage Collector
- 21. Точный режим работы в Boehm Garbage Collector
- 22. Как Java Garbage Collector распознает объекты без ссылок?
- 23. Powershell Garbage Collector удаляет .Net объекты, которые не следует удалять
- 24. Android Garbage Collector освобождает память в середине запроса AJAX
- 25. Сколько объектов создано - Java
- 26. Garbage Collector: Заботясь объекта со ссылкой на Синглтон
- 27. Garbage Collector замедляя применение при переборе в ArrayList
- 28. .NET Garbage Collector - каков его приоритет в потоке?
- 29. JavaScriptCore на iOS: VM Garbage Collector не автоматически emtpying
- 30. Nlog async thread and Garbage Collector вызывает зависание процесса
спасибо antoine, да Runtime - это одноэлементный режим, но когда мы вызываем Runtime.gc(), jvm внутренне создадим один поток, который представляет собой мусорный сборщик (поток демона). но в этом случае, когда мы будем называть gc в двух разных потоках за раз, сколько GC объектов будет создано. –
@RajasekharBurepalli Вызов 'gc()' НЕ создает новый поток. 'gc()' просто запускает методы финализации любых объектов, ожидающих завершения. – Rainbolt
@John - Половина права. Вы правы, что не создает новый поток. Но вызов 'gc()' NOT * "просто запускает методы финализации любых объектов, ожидающих завершения" *. Он фактически запускает сборщик мусора, и обычно он выполняет ** полный ** GC. –