JVM 第二节

直接内存:

常见于NIO操作,用于数据缓冲区

分配回收成本较高,但读写速度快。

磁盘文件 先进入到系统缓存区,再复制到Java缓冲区

直接内存,在操作系统和Java内存都可以读取。

不受JVM内存回收管理。

直接内存的释放,需要调用unsafe.freeMemory()方法来释放

分配和回收原理:

使用了Unsafe对象完成直接内存的分配回收,并且回收需要调用freeMemory方法。

ByteBuffer的实现类内部,使用了Cleaner虚引用来检测ByteBuffer对象,一旦对象被垃圾回收,就会由ReferenceHandler线程通过Cleaner的clean方法调用free Memory来释放直接内存

-XX:+DisableExplicitGC 显式的禁用System.gc()。推荐用Unsafe的freeMemory

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值