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