系统相关
首页 > 系统相关> > 元空间和直接内存

元空间和直接内存

作者:互联网

参考https://blog.csdn.net/Ethan_199402/article/details/110431404
https://www.cnblogs.com/zhai1997/p/12912915.html
https://www.zhihu.com/question/456026457/answer/1850516358
https://www.jianshu.com/p/474d98fc4776

元空间和直接内存


随着JDK8的到来,JVM不再有PermGen。但类的元数据信息(metadata)还在,只不过不再是存储在连续的堆空间上,而是移动到叫做“Metaspace”的本地内存(Native memory)中。从上图可以看到,元空间和直接内存都是堆外内存。

Metaspace

直接内存

直接内存主要被 Java NIO 使用,某种程度上也就是指DirectByteBuffer对象占用的堆外内存。DirectByteBuffer对象创建时会通过Unsafe类接口直接调用操作系统的malloc分配内存,然后将内存的起始地址和大小保存下来,据此就可以直接操作内存空间。

可以看出,直接内存的大小并不受到java堆大小的限制,甚至不受到JVM进程内存大小的限制。它只受限于本机总内存(RAM及SWAP区或者分页文件)大小以及处理器寻址空间的限制(最常见的就是32位/64位CPU的最大寻址空间限制不同)。

标签:永久,内存,JVM,空间,直接,Metaspace,加载
来源: https://www.cnblogs.com/lllliuxiaoxia/p/15839721.html