import java.lang.ref.WeakReference;

public class UmurObjek {
    // objek yang direferensikan field static berumur sepanjang class
    static final String PENDUDUK_TETAP = "data-inti";

    record Sementara(int nomor) {}

    public static void main(String[] args) {
        for (int i = 1; i <= 2; i++) {
            Sementara objek = new Sementara(i);
            WeakReference<Sementara> pengamat = new WeakReference<>(objek);
            System.out.println("objek ke-" + i + " sebelum gc : terlihat = " + (pengamat.get() != null));
            objek = null; // penunjuk terakhir dilepas
            System.gc();
            System.out.println("objek ke-" + i + " setelah gc  : "
                    + (pengamat.get() != null ? "masih ada" : "dipungut"));
        }
        System.out.println("penduduk tetap sepanjang program: " + PENDUDUK_TETAP);
    }
}
