目录
Java直接内存
并不属于JVM的内存结构,不由JVM进行管理。是虚拟机的系统内存,和方法区/元空间都存储在本地内存中,常见于NIO操作时,用于数据缓冲区,它分配回收成本较高,但读写性能也高,简单来说就是很用着不错,但是想弄到手和扔掉都不容易。
关于NIO
Java代码要完成文件的拷贝,如下图,就有两种方式一种就是常规IO,一种就是NIO
常规IO
见下图
常规IO设计到CPU用户态和内核态的转换,拷贝也涉及到系统内存和Java堆内存的拷贝,为了较少这次拷贝,所以就有了NIO
NIO
在系统内存中划分出直接内存,直接内存系统和JVM都可以访问,避免了Java堆内存和系统内存直接的拷贝,所以IO效率有了很大的提高