package com.example.foo; public class SomeClass { public static volatile SomeClass leak = null; public final byte[] data; public final String string; public SomeClass() { leak = this; this.data = new byte[Integer.MAX_VALUE]; this.string = "something"; } @Override public String toString() { return this.string; } public static void main(final String[] args) throws Exception { Object object = "nothing"; try { object = new SomeClass(); } catch (final Throwable e) { } System.out.printf("object = %s (%s)\n", object, object.getClass().getSimpleName()); System.out.printf("leak = %s (%s)\n", leak, leak.getClass().getSimpleName()); } }