Страницы

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

пятница, 10 января 2020 г.

Как передается ссылка на экземпляр класса в Java?

#java #android #ооп


У меня есть класс Class1, в котором я храню какую-то свою информацию.

В классе активити А я создаю экземпляр своего класса Class1 cl1 = new Class1(), заполняю
данными и передаю эту ссылку в класс следующей активити ActivityB actB.cl2 = cl1.

В классе активити B поле cl2 статичное, и доступ к нему внутри пакета. Активити А
рано или поздно уничтожится системой. Тогда что будет с полем cl2? 
    


Ответы

Ответ 1



В Java всё передается по значению без исключений. В данном случае будет передана ссылка на объект по значению. При уничтожении Активити А с объектом, на который ссылается cl1, ничего не произойдет, поскольку на него будет ссылаться объект cl2 из Активити B. Объект будет удален сборщиком мусора (GC), если до него не добраться из так называемых корневых объектов - это объекты, которые доступны вне Heap-памяти. К таким объектам относят все локальные переменные из стека, активные потоки, загруженные классы и другие. В процессе поиска мусора GC начинает обход с корневых объектов и постепенно спускаясь по дереву объектов отмечает их как "живые". Соответственно если объект не доступен ни из одного корневого объекта, то он будет удален.

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

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