После прочтения лекции 6 level о методе
finalize()
стало интересно: сколько должно быть мусорных объектов, чтобы рандомный finalize()
начал работать? Статья по программированию первая, буду рад вашим пояснениям по нераскрытым топикам в статье. Здесь опишу результат, полученный опытным путём. Придётся убивать котов. Уровень на момет написания статьи - 6. На истину не претендую
Обязательно чекните комментарии. После прочтения лекции 6 level о методе finalize() стало интересно: сколько должно быть мусорных объектов, чтобы рандомный finalize()
начал работать? Статья по программированию первая, буду рад вашим пояснениям по нераскрытым топикам в статье. Здесь опишу результат, полученный опытным путём. Придётся убивать котов.
Для эксперимента были использованы два онлайн компилятора. Ресурсы моего компьютера низкие, а на онлайн компиляторе надежда на мощность серверов.
Как базовый в работу был взят Online Java Compiler. И такой код:
public class Cat {
public static int count;
public static void main(String[] args) {
for (count = 0; count< 1000000; count++) {
Cat cat = new Cat();
}
}
Cat() { }
protected void finalize() throws Throwable{
System.out.println("Я убил кота номер " + count);
}
}
Далее совершаем первый запуск и... компилятор оказался крайне кровожадным! 16 431 кота зарезал, выбирая рандомно начиная с 622 946 кота. Далее делаем ещё 5 запусков: 708 убитых котов, 25, 1158, 370 и все начинаются примерно с номера 630к +-15к.
Также интересно, что концовка ооочень часто выглядит так:
Я убил кота номер 999255
Я убил кота номер 999615
Я убил кота номер 999743
Я убил кота номер 999789
Я убил кота номер 999864
Я убил кота номер 999902
Я убил кота номер 1000000
Я убил кота номер 1000000
Я убил кота номер 1000000
Я убил кота номер 1000000
Я убил кота номер 1000000
Я убил кота номер 1000000
Я убил кота номер 1000000
Откуда повторяющиеся номера, если номер после каждого цикла уникален? Пока ответа не ясен. После закрыл все лишние вкладки в браузере (вдруг на что-то повлияет). Результат следующих 4 тестов примерно такой же.
Для чистоты эксперимента применим другой онлайн компилятор с тем же кодом. У него есть ограничение в 183 строки, выводимых на экран, но первые значения всё-такие есть. Тот же около 630 000 номер кота, но уже второго и далее, а вот первый в пяти случаях из пяти оказывался кот около 252 000.
А что думаете вы по результатам эксперимента?
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ