008、聊聊JVM分代模型:年轻代、老年代、永久代

  本文是个人学习《从 0 开始带你成为JVM实战高手》内容总结,详细内容扫描二维码
 
1. 背景引入
                    
 
执行过程:
1、 运行Kafka - 启动JVM进程,启动main线程,创建main线程对应的栈,创建main方法栈帧
2、 调用loadReplicasFromDisk()方法 - 创建方法对应的栈帧,栈帧中放入replicaManager引用,引用在堆中创建的ReplicaManager 对象,将栈帧入    main线程栈
3、调用replicaManager.load(),创建对应的栈帧,入栈
4、loadReplicasFromDisk方法执行完栈帧出栈出栈,Thread.sleep(1000)-一样创建栈帧,入栈出栈 
5、循环2-4  
 
2. 大部分对象其实存活周期极短  
方法内创建的对象生命周期极其短暂的,方法执行完就变成垃圾了
 
3. 少数对象是长期存活的  
静态变量引用的对象,会长期存活
静态变量初始,编译器会在字节码中生成一个静态代码块,代码块中放入初始化语句。也就是说,对象引用是类的初始化过程中完成的
??静态变量存在哪?什么时候静态变量会被清除?  
 
4. JVM分代模型:年轻代和老年代  
年轻代:放新年龄比较小的对象
老年代:经历过n次垃圾回收的对象
 
5. 为什么要分成年轻代和老年代?
 
因为对象存在生存时长的差异,对他们的管理需要采用不同的方法(垃圾回收算法)。
 
6. 什么是永久代?  
就是指方法区,存放类信息的
 

猜你喜欢

转载自www.cnblogs.com/csldm/p/11307698.html