Задать вопрос
fursa08
@fursa08
Junior Android developer

Как написать программу работающую со сборщиком мусора?

Требуется написать программу на Java, демонстрирующую работу сборщика мусора.
В программе должно быть реализовано следующее:
1. Работа с маленькими объектами и большими объектами (Обычно больше 64 КБ),
2. Финализируемыми объектами,
3. Объектами, пережившими N циклов сборки мусора (N=1,2,3,…),

Подскажете куда копать? Не совсем понимаю как именно это написать
  • Вопрос задан
  • 150 просмотров
Подписаться 1 Средний Комментировать
Решение пользователя Vamp К ответам на вопрос (3)
Vamp
@Vamp
Задание поставлено очень широко. Листинг из примера ниже будет ему в точности соответствовать:

// Работа с большими объектами
byte[] b = new byte[65536];
b[0] = 1;
System.out.println(b[0]);

// и с маленькими
String s = "123";
System.out.println(s.hashCode());

// и с финализируемыми объектами
Object f = new Object() {
    @Override
    protected void finalize() {
        System.out.println("I'm finalized!");
    }
};
// Строго говоря, объекты b и s так же являются финализируемыми,
// так как наследуют метод finalize() от своего предка.
// Так что f можно было даже не писать.

System.gc();
System.gc();
System.gc();
System.gc();
// В этом месте объекты b, s и f пережили 4 цикла сборки.
// Наверное... ¯\_(ツ)_/¯
//
// Более точно можно сказать, запустив программу с
// аргументом -verbose:gc или с помощью утилиты visualvm
Ответ написан