直接内存
- 常见于NIO操作,用于数据缓冲区
- 分配成本较高,但是读写性能高
- 不受JVM内存回收管理
传统IO文件输入输出的情况图
java读取文件需要切换至内核态,磁盘文件先读入系统缓存区,再读入java缓冲区
使用Buffer之后的文件输出输入图
使用了Buffer之后会开辟一个java内存和系统内存共享的内存
直接内存-垃圾回收
实际上直接内存的释放是通过底层jdk的Unsafe类实现的,不能参与垃圾回收
但是使用ByteBuffer的话当ByteBuffer被垃圾回收了,虚引用Cleaner就会使用Unsafe吧直接内存的内存释放掉
System.gc是显式的垃圾回收,full GC性能很低
[JVM学习03]直接内存
最新推荐文章于 2024-07-20 23:59:39 发布