Java 本地内存 & 直接内存 & 元空间
本地内存 & 直接内存 & 元空间
Java虚拟机在执行的时候会把管理的内存分配到不同的区域,这些区域称为虚拟机内存;同时对于虚拟机没有直接管理的物理内存,也会有一定的利用,这些被利用但不在虚拟机内存的地方称为本地内存。
-
JVM内存:受虚拟机内存大小的参数控制,当大小超过参数设置的大小时会报OOM。 本地内存:本地内存不受虚拟机内存参数的限制,只受物理内存容量的限制;虽然不受参数的限制,如果所占内存超过物理内存,仍然会报OOM。
直接内存
-
直接内存不是虚拟机运行时数据区的一部分,直接内存是在Java堆外地、直接向系统申请的内存区域。 直接内存使用NIO,通过存在堆中的DirectByteBuffer操作Native内存,所以读写性能高。 频繁读写操作推荐使用直接内存。 NIO允许Java程序使用直接内存,用于数据换成。 直接内存不受JVM管理,但是系统内存是有限的,物理内存不足时会报OOM。
元空间
元空间不在虚拟机中,而是使用本地内存,JVM不会再出现方法区的内存溢出问题。