powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / уничтожение объекта
8 сообщений из 8, страница 1 из 1
уничтожение объекта
    #38071066
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
разбираю тему уничтожения объекта, но есть сомнения насчет правильности реализации.
например, почему если сразу после finalize вызвать имя объекта , то оно будет доступно, ведь объект уже должен быть уничтожен?
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071067
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
package World;

public class Cat {
    public String name;

    Cat(String name) {
        this.name=name;
    }

    protected void finalize() throws Throwable{
        System.out.println("Объект "+name+" уничтожен");
    }
}



Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
package World;

class Dog {
    String name;

    Dog(String name) {
        this.name=name;
    }

    protected void finalize() throws Throwable{
        System.out.println("Объект "+name+" уничтожен");
    }

    public static void main(String[] args) throws Throwable {
        Cat cat=new Cat("murka");
        Dog dog=new Dog("kusaka");

        cat.finalize(); dog.finalize();
        cat=null;
        dog=null;

        //System.out.println("\ncat:имя - "+cat.name);

    }
}
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071078
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

потому что в джаве за уничтожение объектов отвечает сборщик мусора, а finalize это не аналог деструктора из других языков. Когда сборщик доберется до объекта, будет вызван finalize, и то нет гарантии что это произойдет.
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071079
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javapecker, спасибо,
можно ещё вызвать System.gc(), в этом случае работает - строки внутри finalize выполняются, и объект более не доступен, если проверить по имени.
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071081
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,
Можно, но не нужно. Пусть джава сама разбирается когда ей включать уборку.
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071346
risk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174javapecker, спасибо,
можно ещё вызвать System.gc(), в этом случае работает - строки внутри finalize выполняются, и объект более не доступен, если проверить по имени.
Опять же гарантий никто не дает когда реально отработает сборщик мусора
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071351
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174javapecker, спасибо,
можно ещё вызвать System.gc(), в этом случае работает - строки внутри finalize выполняются, и объект более не доступен, если проверить по имени.тоже не факт. этот метод, емнип, лишь намекает сборщику сработать - но не гарантирует его выполнение.
...
Рейтинг: 0 / 0
уничтожение объекта
    #38071358
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174,

Код: java
1.
2.
Runtime.getRuntime().gc();              // Принудительная сборка мусора
Runtime.getRuntime().runFinalization(); // Принудительный вызов finalize()-методов
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / уничтожение объекта
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]