Показать сообщение отдельно
Старый 19.05.2009, 23:58   #23
ana
Модератор
 
Аватар для ana
 
Пол:Мужской
Регистрация: 20.10.2004
Адрес: Germany
Сообщений: 543
Репутация: 312
По умолчанию Re: Простые (ли?) задачки по JAVA

Цитата:
Сообщение от Ignoramus Посмотреть сообщение
Сборщик мусора - весьма загадочная штука.

Это можно лекго проверить, сделаем для этого простой класс со статическими переменными...

Код:
class Nowa {
	static int created = 0;
	static int finalized = 0;
	int i;

	Nowa() {
		i = ++created;
		System.out.println("Object NOWA created: " + i);
	}

	public void finalize() {
		finalized++;

	}
}
Как это работает?
При вызове конструктора мы увеличиваем статическую переменную и пишем в консоль, какой по счёту объект мы создали.

А в методе finalize() [Кто не знает, он вызывается перед уборкой мусора]
увеличиваем другую статическую переменную, что бы узнать, а сколько раз был вызван этот метод,
или другими словами, сколько раз сборщик мусора прошёлся по нашему объекту безжалостно
его уничтожая и освобождая такую нужную память, для более высоких дел ...

Теперь вернёмся к нашей задаче и попробуем разобраться, а сколько
объектов будет доступно для garbage collector после выполнения цикла в main?

Код:
public class Garbage {
	public static void main(String[] args) {

		for (int i = 1; i < 5; i++) {
			Nowa nowa = new Nowa();
		}
		System.gc();
		System.out.println("Total finalized = " + Nowa.finalized);

	}
}
Ну и кого сколько получилось?
__________________
Лучше сидеть в маленькой душной пивной , чем работать на большом светлом заводе...

Последний раз редактировалось ana; 21.05.2009 в 07:48..
ana вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.02133 секунды с 10 запросами