public class Main {

    public Main() {
        Runtime.getRuntime().addShutdownHook(
            new Thread(
                new Runnable() {
                    public void run() {
                        try {
                            close();
                        } catch (Throwable e) {
                            System.out.println(e);
                        }
                    }
            })
        );
    }

    public static void main(String[] args) {
        System.out.println("Enter main");
        Main m = new Main();
        m = new Main();
        m = null;
        System.out.println("Before System.exit(0);");
        System.exit(0);
    }

    protected void finalize() {
        System.out.println("Call finalize()");
    }

    protected void close() {
        finalize();
    }
}