直接内存是在java堆外的,直接向系统申请内存区间,通过DriectByteBuffer操作native内存。
读写文件,需要和磁盘交互,需要由用户态切换到内核态,如下图所示:
使用nio,操作系统会划出直接缓存区可以被java代码直接访问,数据只有一份,nio适合对大文件的读写操作。
直接内存大小可以通过MaxDirectMemorySize设置,如果不指定,默认是和堆的最大值-Xmx参数一致。
直接内存是在java堆外的,直接向系统申请内存区间,通过DriectByteBuffer操作native内存。
读写文件,需要和磁盘交互,需要由用户态切换到内核态,如下图所示:
使用nio,操作系统会划出直接缓存区可以被java代码直接访问,数据只有一份,nio适合对大文件的读写操作。
直接内存大小可以通过MaxDirectMemorySize设置,如果不指定,默认是和堆的最大值-Xmx参数一致。