fursa08
@fursa08
Junior Android developer

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

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

Подскажете куда копать? Не совсем понимаю как именно это написать
  • Вопрос задан
  • 148 просмотров
Решения вопроса 1
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
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Dmtm
Android
п.3 это видимо про WeakReference? Но тогда как гарантировать количество циклов очистки?
Ответ написан
Комментировать
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
Это сложно потому-что
- сборщики мусора - неуправляемые с точки зрения API (вызов System.GC может ничего не делать или быть заглушкой)
- они разные (G1GC, CMS.... ) и по разному себя ведут.

И тот преподаватель который дал такую задачу должен был уточнить Каким образом он хотел увидеть результат. В противном случае получается игра в "Штурман-прибор-100"

По сути единственную вещь которую вы можете продемонстрировать это OutOfMemoryException.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 апр. 2024, в 03:01
1000 руб./за проект
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект