本机直接内存溢出
- 示例
- 虚拟机参数
- 输出
示例
public class DirectMemoryOOM {
private static final int _1MB = 1024 * 1024;
public static void main(String[] args) throws IllegalAccessException {
Field unsafeField = Unsafe.class.getDeclaredFields()[0];
unsafeField.setAccessible(true);
Unsafe unsafe = (Unsafe) unsafeField.get(null);
while (true) {
unsafe.allocateMemory(_1MB);
}
}
}
虚拟机参数
-Xmx20M -XX:MaxDirectMemorySize=10M
解释:
- -Xmx20M:设置JVM的最大堆内存大小为20兆字节(MB)
- -XX:MaxDirectMemorySize=10M:设置JVM的最大直接内存大小为10兆字节(MB)