off-heap memory

1、what is it?

off-heap memory,堆外内存,游离在jvm控制之外的一块内存空间。

2、how to use?

public class TestOHM {
    public static void main(String[] args) throws InterruptedException {
        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(1024 * 1024 * 128);    // 创建一块128M的堆外内存空间
        TimeUnit.SECONDS.sleep(10);
        byteBuffer.clear();    // 清理
        TimeUnit.SECONDS.sleep(10);
        System.out.println("over");
    }
}

3、优缺点

优点:

1.内存管理受os不受jvm管理,减少了gc的时候对这块内存造成的影响。
2.堆内内存的数据要flush到远程时,需要先复制到堆外内存再发送。如果直接在对外内存创建则省掉了这一步,较少了系统开销。

缺点:

1.创建和销毁代价高
2.需要自己管理内存,防止内存泄露

4、paramter

参数 备注
-XX:MaxDirectMemorySize=128M 指定堆外内存大小。如果没有设置,则与Xmx大小相等

你可能感兴趣的:(off-heap memory)