Java руководство для начинающих - Шилдт Герберт (2012)
-
Год:2012
-
Название:Java руководство для начинающих
-
Автор:
-
Жанр:
-
Оригинал:Английский
-
Язык:Русский
-
Издательство:Вильямс
-
Страниц:316
-
ISBN:978-5-8459-1770-6
-
Рейтинг:
-
Ваша оценка:
Java руководство для начинающих - Шилдт Герберт читать онлайн бесплатно полную версию книги
В связи с тем что “сборка мусора” начинается в произвольные моменты времени и выполняется в фоновом режиме, продемонстрировать ее действие не так-то просто, но это можно все же сделать с помощью метода finalize(). Напомним, этот метод вызывается в тот момент, когда объект должен быть удален. Но, как пояснялось ранее, объект не обязательно удаляется именно тогда, когда необходимость в нем отпадает. Вместо этого система “сборки мусора” дожидается того момента, когда освобождение памяти может быть произведено наиболее эффективно. Чаще всего для этого должно накопиться достаточно большое количество неиспользуемых объектов. Поэтому для демонстрации “сборки мусора” с помощью метода finalize () нужно создать и удалить как можно больше объектов, что и предстоит сделать в данном проекте.
Последовательность действий
Создайте новый файл Finalize.java.
Создайте класс FDemo, как показано ниже.
class FDemo {
int х;
FDemo(int i) {
x = i;
}
// вызывается при утилизации объекта
protected void finalize() {
System.out.println("Finalizing " + x);
}
// формирует объект, который тотчас уничтожается
void generator(int i) {
FDemo о = new FDemo(i).;
}
}
В конструкторе данного класса устанавливается значение переменной экземпляра х, определяемое передаваемым параметром. В данном примере переменная экземпляра х служит в качестве идентификатора объекта. При утилизации объекта метод finalize () отображает значение переменной х. Обратите особое внимание на метод generator (). В нем создается объект типа FDemo, который сразу же уничтожается. Этот метод будет использован в дальнейшем.
Создайте класс Finalize, как показано ниже.class Finalize {
public static void main(String args[]) {
int count;
FDemo ob = new FDemo(0);
/* А теперь сформировать большое количество объектов.
В какой-то момент должна начаться "сборка мусора".
Примечание: количество формируемых объектов, возможно,
придется увеличить, чтобы принудить "сборку мусора". */
for(count=l; count < 100000; count++)
ob.generator(count);
}
}
В классе Finalize сначала создается исходный объект ob типа FDemo. Затем из этого объекта формируется 100000 других аналогичных объектов. С этой целью вызывается метод generator () для объекта ob. На различных этапах данного процесса вступает в действие процедура “сборки мусора”. Частота активизации данной процедуры зависит от целого ряда факторов, в том числе от объема свободной памяти и типа операционной системы. Но в любом случае в какой-то момент вы увидите сообщения, выводимые на экран в процессе выполнения метода finalize (). Если ни одного сообщения не появится, попробуйте увеличить число создаваемых объектов, изменив условие завершения цикла for.
Ниже приведен весь исходный код программы из файла Finalize.java.
/*
Пример для опробования 4.2.
Демонстрация "сборки мусора" и метода finalize().
*/
class FDemo {
int x;
FDemo(int i) {
x = i;
}
// вызывается при утилизации объекта
protected void finalize () {
System.out.println("Finalizing " + x) ;
}
// формирует объект, который тотчас уничтожается
void generator(int i) {
FDemo о = new FDemo(i);
}
}
class Finalize {
public static void main(String args[]) {
int count;
FDemo ob = new FDemo(0);
/* А теперь сформировать большое количество объектов.
В какой-то момент должна начаться "сборка мусора".
Примечание: количество формируемых объектов, возможно,
придется увеличить, чтобы принудить "сборку мусора". */
for(count=l; count < 100000; count++)
ob.generator(count);
}
}
Ключевое слово this