Java堆外内存

博客主要介绍了堆外内存(off-heap memory)相关知识。先提及堆内内存,接着给出堆外内存定义、特点,还阐述了堆外内存的管理方式,即通过DirectByteBuffer进行管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 首先了解堆内内存on-heap memory
这里写图片描述
2. 定义:off-heap memory

堆外内存就是把内存对象分配在Java虚拟机的堆以外的内存。这些内存直接受操作系统管理(而不是虚拟机),
这样做的结果就是能够在一定程度上减少垃圾回收对应用程序造成的影响。

3. 特点

1、减少了垃圾回收
     因为垃圾回收会暂停其他的工作。
2、加快了复制的速度
    堆内在flush到远程时,会先复制到直接内存(非堆内存),然后在发送;
    而堆外内存相当于省略掉了这个工作。

4. 堆外内存的管理:DirectByteBuffer

DirectByteBuffer类是在Java Heap外分配内存,对堆外内存的申请主要是通过成员变量unsafe来操作; 
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024*128);

5. 其他

System.gc使用-XX:+DisableExplicitGC可以禁掉;
通过-XX:+ExplicitGCInvokesConcurrent也可以做并行gc;
最常见的场景是RMI/NIO下的堆外内存分配等;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值