package GJVM; import sun.misc.Unsafe; import java.lang.reflect.Field; /** * VM Args:-Xmx20M -XX:MaxDirectMemorySize=10M * @author zzm 来自周志明老师的《深入理解Java虚拟机》一书 */ public class DirectMemoryOOM { private static final int _1MB = 1024 * 1024; public static void main(String[] args) throws Exception { Field unsafeField = Unsafe.class.getDeclaredFields()[0]; unsafeField.setAccessible(true); Unsafe unsafe = (Unsafe) unsafeField.get(null); while (true) { unsafe.allocateMemory(_1MB); } } }