Java(JVM)内存模型

Java内存模型在线程堆栈(每个线程一个)和堆区域之间划分。

线程堆栈

它是线程特定的内存区域,包含局部变量,方法调用信息等。JVM堆栈可以是固定大小或可变大小。如果线程中的计算超出其堆栈大小限制,则JVM抛出StackOverflowError并退出。

它包含在应用程序生命周期中创建的所有对象。在虚拟机启动时创建堆。垃圾收集器回收对象的堆存储,并且永远不会显式释放对象。JVM未使用任何自动存储管理系统,并且可能会根据系统要求而有所不同。堆的大小可以是固定的,也可以根据要求而变化。堆的内存不必是连续的。

静态变量存储在堆区域中,而存储在堆中的对象可以通过存储在线程堆栈中的引用来引用。

局部变量存储在堆栈区域中。