写点什么

极客时间架构师训练营 - week9 - 作业 1

用户头像
jjn0703
关注
发布于: 2020 年 08 月 05 日
  • 请简述 JVM 垃圾回收原理。

首先需要由 JVM 判断出垃圾,典型的方法包括引用计数法和可达性分析法。引用计数法,即给每个对象添加一个计数器,当有地方引用该对象时计数器加 1,当引用失效时计数器减 1。用对象计数器是否为 0 来判断对象是否可被回收。可达性分析法是通过 GC ROOT 的对象作为搜索起始点,通过引用向下搜索,所走过的路径称为引用链,通过对象是否有到达引用链的路径来判断对象是否可被回收。

在确定了哪些垃圾可以被回收后,JVM 要做的事情就是开始进行垃圾回收。具体方法包括:标记-清除法、标记-复制法、标记-压缩法、分代回收法等。

标记-清除法是在标记完后统一回收所有被标记对象占用的内存空间。此法会产生大量不连续的内存碎片,不利于后续连续内存的分配;

标记-复制法则将可用的内存空间按容量划分为大小相等的两块,每次只使用其中一块。当这一块使用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉;

标记-压缩法则与标记-复制-清除法类似,只是后续的步骤不再是直接清除可以回收的对象,而是将所有存活的对象都向一端移动后,再直接清理掉端边界以外的内存。

分代回收法根据对象存活周期的不同将内存划分为几块,Java 中主要是新生代、年老代这样就可以根据各个年代的特点,采用合适的收集算法了如新生代采用了复制算法,而老年代采用了压缩算法。


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

主要面临的挑战:

用户都希望能秒杀到特价商品,系统的瞬时访问并发量会很高。不做限制,系统一定会奔溃。

问题:

1.带宽是一定的且前台需要对用户友好;

2.后台严格控制,要保证方案的安全性、可靠性与公平性;

3.响应要快,秒杀系统要尽快上线,不影响目前的系统。

核心的架构方案:

1.另起炉灶,拉出最简化的必要处理后台处理逻辑,组成后台,严格审核代码,避免出现漏洞,被人利用;

2.将页面缓存成 HTML,存到 CDN;

3.CDN 过滤大部分请求,后台再设置多道流量关卡,将访问后台的流量限制到后台所能承受的范围内;

4.进行并发测试演练。

发布于: 2020 年 08 月 05 日阅读数: 55
用户头像

jjn0703

关注

Java工程师/终身学习者 2018.03.26 加入

USTC硕士/健身健美爱好者/Java工程师.

评论

发布
暂无评论
极客时间架构师训练营 - week9 - 作业 1