Урок 8

Сборка мусора и метод finalize

Освобождение памяти в Java выполняется автоматически. Используемая для выполнения этой задачи технология называется сборкой мусора. Процесс проходит следующим образом: при отсутствии каких либо ссылок на объект программа заключает, что этот объект больше не нужен, и занимаемую объектом память можно освободить.

Чтобы ввести в класс средство полного завершения, достаточно переопределить метод finalize(), который вызывается в исполняющей среде Java непосредственно перед удалением объекта данного класса. В теле метода finalize() нужно указать те действия, которые должны быть выполнены перед уничтожением объекта. Метод finalize() вызывается лишь непосредственно перед сборкой "мусора”.

Метод finalize() не вызывается при выходе объекта из области действия. Заранее неизвестно, когда будет (и будет ли вообще) выполняться метод finalize().

Общая форма:

protected void finalize() {
    //здесь должен следовать код полного завершения
}

Пример 1. Использование метода finalize()

public class Box5 {
    double width;
    double height;
    double depth;

    // Конструктор класса Box5
    Box5(double w, double h, double d) {
        width = w;
        height = h;
        depth = d;
    }

    // подсчитать объем коробки
    double getVolume() {
        return width * height * depth;
    }

    protected void finalize() {
        System.out.println("Коробка исчезает навсегда.");
    }
}
public class BoxDemo8 {
    public static void main(String[] args) {
        Box5 myBox = new Box5(10, 20, 15);

        System.out.println("Объем: " + myBox.getVolume());

        myBox = null;
        System.gc();
    }
}



0 comments
Leave your comment: