根据元空间的描述,它仅使用 native 内存(无分页)。
由于类元数据是从 native 内存中分配的,因此最大可用空间是总可用系统内存。
以上两个解释是我在网上找到的。 我有一个问题。
- 所谓的native内存是位于jvm进程中的吗? native 内存大小=java进程内存大小-堆大小,对吧?如果是这样,为什么他们说最大可用空间是可用系统内存总量,因为 32 位 java 进程的最大大小仅限于 2G 左右?
最佳答案
it only uses the native memory (no paging).
可以根据需要交换此内存。
The so-called native memory is located in jvm process?
native 内存位于 JVM 进程中。
The native memory size = java process memory size - heap size, right?
native 内存是 native 代码可以看到的所有内存。您可能想要排除堆。
If that, why they said the max available space is the total available system memory
如果您没有操作系统或架构限制,例如
the maximum size of 32-bit java process is limited only to about 2G ?
最大为 4 GB,但在不同的操作系统上,部分虚拟内存由操作系统使用。在 Windows XP 上,您只有 1.2 - 1.5 GB。在某些 UNIX 上,32 位进程可以使用 3.0 - 3.5 GB
关于java - jvm8 中的元空间大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36999737/