深入理解java虚拟机[内存溢出实例](二)

2014-11-24 03:19:28 · 作者: · 浏览: 1
XX:MaxDirectMemorySize=10M,限制最大可使用的本机直接内存大小为10MB,例子代码如下:

[java]
  1. public class DirectMemoryOOM{
  2. private static final int _1MB = 1024* 1024 * 1024;
  3. publc static void main(String[] args) throws Exception{
  4. Field unsafeField = Unsafe.class.getDeclaredFields()[0];
  5. unsafeField.setAccessible(true);
  6. Unsafe unsafe = (Unsafe) unsafeField.get(null);
  7. while(true){
  8. //unsafe直接想操作系统申请内存
  9. unsafe.allocateMemory(_1MB);
  10. }
  11. }
  12. }

    当运行一段时间之后,10MB的本机直接内存被分配光,无法在进行直接内存分配时,产生OutOfMemoryError。