Java 中的内存管理
Java 内存模型分为线程栈(每个线程一个)和堆区域。
线程栈
它是线程特定的内存区域,包含局部变量、方法调用信息等。JVM 栈可以是固定大小或可变大小。如果某个线程中的计算超出了其栈大小限制,则 JVM 会抛出 StackOverflowError 并退出。
堆
它包含应用程序生命周期中创建的所有对象。堆在虚拟机启动时创建。垃圾回收器为对象回收堆存储空间,并且对象永远不会被显式释放。JVM 不会使用任何自动存储管理系统,并且可能会根据系统要求改变。堆可以是固定大小,也可以根据要求而变化。堆的内存不必是连续的。
静态变量存储在堆区域中,存储在堆中的对象可通过存储在线程栈中的引用来引用。
局部变量存储在堆栈区域中。
广告