写点什么

第 9 周作业

用户头像
王鑫龙
关注
发布于: 2020 年 08 月 05 日



作业一:

  • 请简述 JVM 垃圾回收原理。

  • 设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?



JVM垃圾回收原理:



JVM垃圾回收的主要作用是自动回收不再使用的对象,释放内存资源。

主要有三种回收方法:

1.清理:标记垃圾对象为空闲。

2.压缩:将存活的分散的对象拷贝在一段连续的内存空间中,确保空闲内存是连续的。

3.复制:将堆分成两部分,只在其中一部分创建对象,当这部分空间用完时,将标记的可用对象复制到另一个空间中。



分代回收:

Eden区创建对象,From区和To区用于对象复制,回收时,将老年代对象从新生代区复制到老年代区。



垃圾回收算法:

串行回收算法:1个线程进行垃圾回收,回收时暂停程序运行。

并行回收算法:多个线程进行垃圾回收,回收时暂停程序运行。

并发回收器CMS:只在重标记时暂停程序运行,初始标记、并发标记和清理时并发执行,不暂停程序运行。

G1回收器:

G1 也存在着年代的概念,与其他内存结构不一样,其内部是类似棋盘状的一个个 region 组成,如下图:

G1 选择的是复合算法:

在新生代,G1 采用的仍然是并行的复制算法,所以同样会发生 Stop-The-World的暂停。新生代的清理会带上old区已标记好的region。

在老年代,大部分情况下都是并发标记,而整理(Compact)则是和新生代GC时捎带进行,并且不是整体性的整理,而是增量进行的,也就是原本新生代的区域中对象在足够old时,该区域可以直接成为老生代。

用户头像

王鑫龙

关注

还未添加个人签名 2018.02.04 加入

还未添加个人简介

评论

发布
暂无评论
第9周作业