java中是否可能有多个堆?
java中是否可能有多个堆?如果可能的话,那么在什么情况下会发生这种情况?已经有多个内存区域,但只有一个Java堆 通常有java中是否可能有多个堆?,java,memory,memory-management,garbage-collection,heap,Java,Memory,Memory Management,Garbage Collection,Heap,java中是否可能有多个堆?如果可能的话,那么在什么情况下会发生这种情况?已经有多个内存区域,但只有一个Java堆 通常有 Java堆,可能会被分解为 伊甸园空间 幸存者空间 终身空间 用于小型直接内存分配的本机内存堆。e、 g.ByteBuffer.allocateDirect(4)有关本机空间中[heap]区域的有趣讨论,请参阅 用于大型直接分配的匿名内存映射ByteBuffer.allocateDirect(10000000) 线程的堆栈空间。i、 e.方法中的局部变量 代码的Per
- Java堆,可能会被分解为
- 伊甸园空间
- 幸存者空间
- 终身空间
- 用于小型直接内存分配的本机内存堆。e、 g.
有关本机空间中ByteBuffer.allocateDirect(4)
区域的有趣讨论,请参阅[heap]
- 用于大型直接分配的匿名内存映射<代码>ByteBuffer.allocateDirect(10000000)
- 线程的堆栈空间。i、 e.方法中的局部变量
- 代码的Perm Gen或元空间。您可以使用字节码和JIT编译的代码
- 本机代码的共享库。这包括DLL/SO以及为什么“hello world”似乎使用了这么多内存
- 内存映射文件区域。e、 g.FileChannel.map(..)
- 其他地区很少直接使用,如VDSO。只能通过JNI访问或不安全
注意:这就是JVM在Windows和Linux上的实现方式,标准中没有任何规定必须存在JVM才能让Java工作。由于Java虚拟机实例中只有一个堆,因此需要多个JVM才能实现多个堆 Java虚拟机架构-您可以看到堆区域是Java虚拟机中唯一的一个区域
我只是想知道——为什么?也许您可以通过多个jvm来实现这一点。jvm规范指定jvm的每个运行实例都应该有一个堆。你说的多堆是什么意思?。。您可以更改jvm的堆大小。因此,在单个jvm中不可能有两个堆?答案已经是它通常所指的方式:堆,而不是“堆”。您能告诉我您想要实现什么吗?