1、背景引入
我们从下面这段代码开始今天的内容:

有没有很眼熟呀,跟前面我们的代码差不多。只是这里稍微调整了一下,在main() 方法中,会循环调用 loadReplicasFormDisk() 方法。
我们来用内存分配的角度来用图示来描述一下上面的代码怎么运行的。
首先,一旦 main() 方法执行,那么就会把 main() 方法的栈桢压入 main 线程的Java 虚拟机栈中,如图:

接着,进入循环体中,会调用 loadReplicasFormDisk() 方法,就会把 loadReplicasFormDisk() 方法的栈桢也压入到 main 线程的Java 虚拟机里面去,然后图示就像下面这样:

然后,在 loadReplicasFormDisk()方法中,每次都会去堆里面创建 一个 ReplicaManger 对象的实例,然后通过 loadReplicasFormDisk() 栈桢中的局部变量表中的 “replicaManager” 变量去引用堆中创建的那个 ReplicaManger 对象的实例,看下图:

本文通过实例代码分析JVM内存管理,指出大部分对象存活时间短暂,适合年轻代;少数对象长期存活,进入老年代。JVM将堆内存划分为年轻代和老年代,以优化垃圾回收策略。永久代存储类信息,与方法区相关。
最低0.47元/天 解锁文章
153

被折叠的 条评论
为什么被折叠?



