«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Собирается ли мусор потока, когда его ссылка равна нулю в Java?

Собирается ли мусор потока, когда его ссылка равна нулю в Java?

Опубликовано 18 ноября 2024 г.
Просматривать:373

Is a Thread Garbage Collected When its Reference is Set to Null in Java?

Тема Java: мусор собран или нет?

В этом фрагменте кода Java создается новый поток и запускается с помощью t.start( ). Однако после запуска потока ссылка потока t устанавливается в нулевое значение с t = null. Это поднимает вопрос о том, будет ли поток собирать мусор без активной ссылки на него.

Сборка мусора в Java

Когда сборщик мусора работает в Java , он идентифицирует и удаляет объекты, которые больше не доступны из активных частей программы. В этом случае поток создается как анонимный класс, который продолжает работать. Несмотря на то, что для ссылки t в основном потоке установлено значение null, сам поток остается активным и не подлежит немедленной сборке мусора.

Почему поток остается активным

A работающий поток считается корнем сборки мусора, то есть он считается доступным для сборщика мусора. Пока поток все еще работает, он предотвращает сбор мусора для объектов, на которые он ссылается.

В этом случае поток ссылается на свои собственные внутренние структуры данных, такие как трассировка стека, состояние потока и общая память. Будучи корнем сборки мусора, поток гарантирует, что эти внутренние объекты остаются доступными.

Основной поток как корень сборки мусора

Аналогично, основной поток также служит корень сборки мусора. Хотя явных ссылок на основной поток может и не быть, он по-прежнему активен и работает. В результате он предотвращает сбор мусора для себя и любых объектов, на которые он ссылается.

Заключение

Следовательно, в этом фрагменте кода поток будет продолжать работать бесконечно, потому что он считается корнем сборки мусора. Тот факт, что у него нет явной ссылки из основного потока, не имеет значения, поскольку он остается активным и сохраняет доступные объекты, на которые ссылается. Сборщик мусора будет собирать поток только после его завершения и больше не считается корнем сборки мусора.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3