Работает пока GC не удалит объект, на который есть только "мягкая" (monkey) ссылка.
Два вопроса:
Почему иногда вылетает OutOfMemoryError
, а иногда нет? Вылетает тогда, когда GC не справляется со своей работой или я что-то не так понял?
От чего зависит продолжительность работы программы?
Запускал на 3-х компах по 5-7 раз:
OutOfMemoryError
), OutOfMemoryError
),OutOfMemoryError
).На всех ПК по 8гб оперативной памяти.
public class Solution {
public static Helper helper = new Helper();
public static class Monkey {
private String name;
public Monkey(String name) {
this.name = name;
}
@Override
protected void finalize() {
Helper.isFinalized = true;
System.out.format("Bye-Bye, %s!\n", name);
}
}
public static void main(String args[]) throws InterruptedException {
helper.startTime();
Monkey monkey = new Monkey("Simka");
SoftReference<Monkey> reference = new SoftReference<>(monkey);
helper.callGC();
monkey = null;
helper.callGC();
helper.heapConsuming();
if (reference.get() == null)
System.out.println("Finalized");
helper.finish();
}
public static class Helper {
public static boolean isFinalized;
private long startTime;
void startTime() {
this.startTime = System.currentTimeMillis();
}
int getTime() {
return (int) (System.currentTimeMillis() - startTime) / 1000;
}
void callGC() throws InterruptedException {
System.gc();
Thread.sleep(1000);
}
void heapConsuming() {
try {
List<Solution> heap = new ArrayList<Solution>(100000);
while (!isFinalized) {
heap.add(new Solution());
}
} catch (OutOfMemoryError e) {
System.out.println("Out of memory error raised");
}
}
public void finish() {
System.out.println("Done");
System.out.println("It took " + getTime() + " sec");
}
}
}
Дюк, вынеси мусор
Вот ссылка. Можно прочесть весь цикл статей, про все сборщики мусора, которые предоставляет Java HotSpot VM. Оттуда станет понятно, когда запускается сборщик мусора, как работает, и немного станет яснее о внутреннем устройстве разных GC.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Колллеги, делаю сайтПочему-то не скроллится меню в мобильной версии от 320 до 425 - как буд-то выставлена где-то захардкоженная высота
Подскажите, как сверстать такой заголовок, с двум линиями с боку, только чтоб линии при уменьшении экрана не уплывали
Пытаюсь организовать наследование такого типа (Напиток > Алкогольный/Без алкогольный > Пиво/Вода (к определенным функциям))