fursa08
@fursa08
Junior Android developer

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

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

Подскажете куда копать? Не совсем понимаю как именно это написать
  • Вопрос задан
  • 140 просмотров
Решения вопроса 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
Ent. Software engineer. Oracle. SQL. BigData.
Это сложно потому-что
- сборщики мусора - неуправляемые с точки зрения API (вызов System.GC может ничего не делать или быть заглушкой)
- они разные (G1GC, CMS.... ) и по разному себя ведут.

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

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

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

Войти через центр авторизации
Похожие вопросы
Crypterium Москва
от 180 000 до 240 000 ₽
Eltex Новосибирск
от 100 000 ₽
Сбербанк Москва
от 150 000 до 250 000 ₽
07 июн. 2020, в 01:42
300000 руб./за проект
07 июн. 2020, в 00:15
500 руб./за проект