JVM系列(四)垃圾回收之分代模型

       程序在运行过程中需要创建大量的对象,这些对象都会被分配至Java的堆内存中。由于我们所创建的对象生命周期是不同的,所以Java堆被划分为两块区域新生代(Young)和老年代(Old)

(1)新生代 :创建后立马就可以回收的对象

(2)老年代: 创建之后需要长时间存放于内存中的对象

如下两个示例:

       执行主线程main方法,每一秒会调用一次getUserInfo方法,都会生成一个帧栈压入虚拟机栈中,每次方法执行完成就会产生一个垃圾(User实例对象)。因为当方法调用完后就在也没有任何地方引用它了,这种没有引用的对象就会放在新生代。


       将代码稍作调整,改为创建了一个User静态变量,这次每次执行完,User实例对象还会停留在堆上,由于该对象一直有引用指向,所以无法回收,长期存在就会被放置老年代

       之所以需要将Java堆划分为新生代和老年代,主要是JVM针对不同的生命周期对象,采用了不同的垃圾回收算法,从而更有的利用空间,也提高性能

(3) 永久代

永久代是Hotspot虚拟机特有的概念,是方法区的一种实现,JDK1.8后,永久代被元空间(本地内存)替代了,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容