- public class DirectMemoryOOM{
- private static final int _1MB = 1024* 1024 * 1024;
- publc 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直接想操作系统申请内存
- unsafe.allocateMemory(_1MB);
- }
- }
- }
当运行一段时间之后,10MB的本机直接内存被分配光,无法在进行直接内存分配时,产生OutOfMemoryError。
深入理解java虚拟机[内存溢出实例](二)
XX:MaxDirectMemorySize=10M,限制最大可使用的本机直接内存大小为10MB,例子代码如下: [java]