架构训练营第 9 周

作业一:

请简述 JVM 垃圾回收原理

老师讲课内容过于基本,如果要比较深入地理解GC,可以尝试回答如下问题。

1、对象在哪分配?
Eden, TLAB, 老年代
2、哪些内存需要回收?
堆,方法区
3、什么时候回收? 新生代 GC 触发时机? 老年代触发时机?(When)
4、如何知道哪些对象需要回收, 哪些不需要回收?GC Root + 可达性分析(标记)
5、GC Root 包括哪些对象?
6、从哪开始回收(即SaftPoint是什么)? (Where)
7、如何回收,即回收方法?
7、如何查看回收过程?
8、什么是分代设计, 为什么?
9、新生代 GC 过程
10、Minor GC 扫描范围?
11、Minor GC 时要扫描整个堆么? 不需要, 为什么?
12、新对象是否一定分配在新生代 ? 什么条件下直接分配在老年代 ?
13、如何解决多线程并发对象分配?
14、如何解决老年代引用新生代扫描整个堆?
15、新生代对象如何进入老年代
16、你知道哪些 GC 算法,各个 GC 算法的特点、过程、使用场景及优缺点
17、永久代回收哪些对象?
废弃常量,无用类(实例被回收,类加载器被回收,Class 对象没有在任何地方被引用,无法通过反射访问)
18、什么是分配担保(handle Promotion)
19、什么是虚共享。多个 volatile 字段共享缓存行。
20、Major GC 通常是跟 Full GC 是等价的,收集整个GC堆

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

作业二:

根据当周学习情况,完成一篇学习总结

一如既往的水,后悔啊

你可能感兴趣的:(架构)