正如我所读到的,JVM有两个内存空间(在java 8中),堆和元空间。
我们可以使用-Xss
标志指定堆栈内存(正如我已经阅读过,java 8中默认为1MB)。如果java程序创建了数千个线程,那么堆栈的内存可能非常重要。
那么,线程堆栈驻留在哪个内存空间(堆或元空间)中?
答案 0 :(得分:-1)
Java虚拟机内存由区域组成。存储变量和方法的堆栈区域以及存储其他所有内容的堆空间区域。 Java堆空间再次在称为代的不同区域中构建,并且存储对象的位置取决于对象的生存时间。
JVM中只有一个堆,所有线程共享它。该 堆只包含对象。没有办法孤独 堆上的原始类型或对象引用 - 这些必须是 一个对象的一部分。数组驻留在堆上,包括数组 原始类型,但在Java中,数组也是对象。
除了Java堆栈和堆之外,其他地方数据可能存在 在JVM中是方法区域,它包含所有类(或 程序使用的静态变量。方法区域类似于 堆栈中只包含原始类型和对象 引用。然而,与堆栈不同,类中的变量 方法区域由所有线程共享。
JVM中只有一个堆,并且所有线程都共享它。有关详细信息,请继续阅读here