Код IT
← Каталог

JVM, память и потоки — Куча

Фрагмент из «JVM, память и потоки»: Куча.

Java main.java
public class YoungGenExample {
    public static void main(String[] args) {
        // Объекты создаются в Eden
        byte[] data1 = new byte[1024 * 100]; // 100 KB
        byte[] data2 = new byte[1024 * 200]; // 200 KB
        
        // После нескольких циклов сборки мусора
        // выжившие объекты перемещаются в Survivor
        
        for (int i = 0; i < 1000; i++) {
            byte[] temp = new byte[1024 * 50];
            // временные объекты быстро удаляются из Eden
        }
        
        // Объекты, пережившие несколько сборок,
        // перемещаются в Old Generation
        byte[] longLived = new byte[1024 * 1024 * 10]; // 10 MB
        keepReference(longLived);
    }
    
    static void keepReference(byte[] data) {
        // объект остаётся достижимым
    }
}
public class YoungGenExample {
    public static void main(String[] args) {
        // Объекты создаются в Eden
        byte[] data1 = new byte[1024 * 100]; // 100 KB
        byte[] data2 = new byte[1024 * 200]; // 200 KB
        
        // После нескольких циклов сборки мусора
        // выжившие объекты перемещаются в Survivor
        
        for (int i = 0; i < 1000; i++) {
            byte[] temp = new byte[1024 * 50];
            // временные объекты быстро удаляются из Eden
        }
        
        // Объекты, пережившие несколько сборок,
        // перемещаются в Old Generation
        byte[] longLived = new byte[1024 * 1024 * 10]; // 10 MB
        keepReference(longLived);
    }
    
    static void keepReference(byte[] data) {
        // объект остаётся достижимым
    }
}