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大小相等 |
网友评论