Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Создание объекта без присвоения ссылки

#java #сборщик_мусора


Есть класс, в конструкторе которого создается асинхронный слушающий сокет. Вся работа
с сокетом реализована в этом классе и внешняя ссылка на этот класс не нужна.

Вопрос, на сколько корректен такой способ создания объекта класса

new Server();


т.е. без присвоения созданного экземпляра переменной. Не прибьет ли такой объект
сборщик мусора?
    


Ответы

Ответ 1



При вызове каждого метода создаётся стековый кадр. Операция new поместит ссылку на объект в стековый кадр того метода, который её вызвал. Даже без присвоения этой ссылки переменной, она будет сохраняться в стеке до тех пор, пока метод не закончится и стековый кадр не будет уничтожен. А сборщик мусора не трогает те объекты, на которые есть ссылки в стеке.

Комментариев нет:

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