写点什么

第 9 周课后练习 - 性能优化三

用户头像
潘涛
关注
发布于: 2021 年 03 月 09 日

作业一(至少完成一项)

1、请简述 JVM 垃圾回收原理。

JVM 垃圾回收就是将 JVM 堆中的已经不再被使用的对象清理掉,释放宝贵的内存资源。JVM 通过一种可达性分析算法进行垃圾对象的识别,具体过程是:从线程栈帧中的局部变量,或者是方法区的静态变量出发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记,所有被标记过的对象都是被使用的对象,而那些没有被标记的对象就是可回收的垃圾对象了。

进行完标记以后,JVM 就会对垃圾对象占用的内存进行回收,回收主要有三种方法:

三种回收方法

  • 清理:将垃圾对象占据的内存清理掉,其实 JVM 并不会真的将这些垃圾内存进行清理,而

是将这些垃圾对象占用的内存空间标记为空闲,记录在一个空闲列表里,当应用程序需要创

建新对象的时候,就从空闲列表中找一段空闲内存分配给这个新对象。

  • 压缩:从堆空间的头部开始,将存活的对象拷贝放在一段连续的内存空间中,那么其余的空

间就是连续的空闲空间。

  • 复制:将堆空间分成两部分,只在其中一部分创建对象,当这个部分空间用完的时候,将标

记过的可用对象复制到另一个空间中。

JVM 内存分代回收

分代的垃圾回收策略:由于不同的对象的生命周期是不一样的。因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率。

JVM 内存划分为:新生代、老年代。新生代又分为 Eden 区、From 区、To 区,new 的对象,根据生存周期,分配在三区两代中存在。


用户头像

潘涛

关注

还未添加个人签名 2020.02.25 加入

还未添加个人简介

评论

发布
暂无评论
第9周课后练习-性能优化三