写点什么

第九周 作业

用户头像
魔曦
关注
发布于: 2020 年 08 月 05 日

作业一:

请简述 JVM 垃圾回收原理。

JVM垃圾回收的采用的是根搜索算法,不采用引用计数算法是因为没有办法解决循环依赖问题。

对于GC(垃圾收集)来说,当程序创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。

GC针对JVM堆中不同的区域采用不同回收算法,比如新生代采用是复制算法,老年代采用的是标记整理清除算法,

新生代垃圾收集:对象首先会在eden区,当eden区放不下新的对象时,会触发新生代垃圾回收,如果新生代对象达到了对象在新生代存活的最大年龄,该对象就会移到老年代

老年代垃圾收集:老年代放不下新生代移动过来的对象就会触发fullGC,一般情况下fullGC一定是伴随着一次YoungGC

常见的垃圾收集器主要有CMS、ParNew、G1、ZGC等。



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

秒杀系统的主要挑战和问题如下:

大流量并发读

大流量并发写

安全<防止未开始活动商品被秒杀完了或者活动中黄牛用户刷单>



秒杀系统核心的架构方案或思路如下:

并发读的核心优化理念是尽量减少用户到服务端来“读”数据,或者让他们读更少的数据;动静分离

并发写的处理原则也一样,它要求我们在数据库层面独立出来一个库,做特殊的处理。

另外,我们还要针对秒杀系统做一些保护,针对意料之外的情况设计兜底方案,以防止最坏的情况发生。

安全 一般要求从设计上需要执行规避



用户头像

魔曦

关注

我思故我在! 2018.01.15 加入

凡事有交代,件件有着落,事事有回音。

评论

发布
暂无评论
第九周 作业