powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Вопрос про finalize
5 сообщений из 5, страница 1 из 1
Вопрос про finalize
    #38868277
Dryn9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. Изучаю Garbage Collector и возник вопрос про метод finalize.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
class A{
	protected void finalize()
	{
		System.out.println("Hello");
	}
}

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new A();
		System.gc();
	}

}


Если я создаю объект так: new A(); то метод finalize вызывается и выводится Hello. А если создать например так: A x = new A(); то finalize уже не вызывается. Почему так происходит?
...
Рейтинг: 0 / 0
Вопрос про finalize
    #38868308
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
потому что в x лежит ссылка на объект, а х живет пока main не кончится,
а коллектор убивает объекты, когда на эти объекты нет ссылок
...
Рейтинг: 0 / 0
Вопрос про finalize
    #38868505
Dryn9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bochkov,

Даже когда делаю так:
A x = new A();
x = null;
все равно коллектор его не убивает.
Еще вопрос: когда заканчивается работа программы коллектор убивает все объекты созданные через new?
...
Рейтинг: 0 / 0
Вопрос про finalize
    #38868534
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dryn9, оставь в покое GC. На этапе изучения лучше сосредоточиться на чём-то другом.
Более детерминированном и поддающемуся наблюдению.
...
Рейтинг: 0 / 0
Вопрос про finalize
    #38869108
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dryn9bochkov,

Даже когда делаю так:
A x = new A();
x = null;
все равно коллектор его не убивает.
Еще вопрос: когда заканчивается работа программы коллектор убивает все объекты созданные через new?

1. Сборщик мусора не обязан работать при вызове gc()
2. finalize будет вызван когда-нибудь потом. Может быть. Если звёзды удачно лягут.

Вообще забудь про finalize - это одна из бредовых идей создателей java. Теперь- как тот чемодан без ручки- выкинуть нельзя (обратная совместимость), а очень хочется.

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


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