Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






ПРИМЕР 2. Сборка мусора и завершение кода






В связи с тем что «сборка мусора» начинается в произвольные моменты времени и выполняется в фоновом режиме, продемонстрировать ее действие не так-то просто, но это можно все же сделать с помощью метода finalizeO. Этот метод вызывается в тот момент, когда объект должен быть удален. Не обязательно удаляется именно тогда, когда необходимость в нем отпадает. Вместо этого система «сборки мусора» дожидается того момента, когда освобождение памяти может быть произведено наиболее эффективно. Чаще всего для этого должно накопиться достаточно большое количество неиспользуемых объектов. Поэтому для демонстрации «сборки мусора» с помощью метода finalize () нужно создать и удалить как можно больше объектов, что и предстоит сделать в данном проекте.

Последовательность действий

1. Создайте новый файл Finalize.java.

2. Создайте класс 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);

}

}

3. В конструкторе данного класса устанавливается значение переменной экземпляра X, определяемое передаваемым параметром. В данном примере переменная экземпляра X служит в качестве идентификатора объекта. При утилизации объекта метод finalize() отображает значение переменной х. Обратите особое внимание на метод generator (). В нем создается объект типа FDemo, который сразу же уничтожается. Этот метод будет использован в дальнейшем.

4. Создайте класс Finalize, как показано ниже.

class Finalize {

public static void main(String args[]) {

int count;

FDemo ob = new FDemo(0);

/* A теперь сформировать большое количество объектов.

В какой-то момент должна начаться " сборка мусора".

Примечание: количество формируемых объектов, возможно,

придется увеличить, чтобы принудить " сборку мусора". */

for (count=l; count < 100000; count++)

ob.generator(count); I

}

}

5. В классе Finalize сначала создается исходный объект ob типа FDemo. Затем из этого объекта формируется 100000 других аналогичных объектов. С этой целью вызывается метод generator () для объекта ob. На различных этапах данного процесса вступает в действие процедура «сборки мусора». Частота активизации данной процедуры зависит от целого ряда факторов, в том числе от объема свободной памяти и типа операционной системы. Но в любом случае в какой-то момент вы увидите сообщения, выводимые на экран в процессе выполнения метода finalize (). Если ни одного сообщения не появится, попробуйте увеличить число создаваемых объектов, изменив условие завершения цикла for.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.