第九周作业
一、请简述 JVM 垃圾回收原理。
JVM 垃圾回收就是将 JVM 堆中的已经不再被使用的对象清理掉,释放宝贵的内存资源。
JVM 通过一种可达性分析算法进行垃圾对象的识别。
具体过程是:从线程栈帧中的局部变量,或者是方法法区的静态变量出发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记,所有被标记过的对象都是被使用的对象,而那些没有被标记的对象就是可回收的垃圾对象了。
二、设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
1、秒杀系统带来的高并发主要造成的挑战有:
1、网络带宽耗尽
2、服务器崩溃,停止响应
3、数据库瘫痪等
2、另外,秒杀系统设计不合理也会带来一些问题,比如秒杀器等存在。
秒杀器可以不停刷新秒杀页面,由脚本在秒杀开始时抢先下单,造成真实客户正常操作无法抢到秒杀商品。
秒杀器还可能跳过秒杀页面直接进入下单页面,提前下单。
3、秒杀系统设计原则
(1)静态化,商品页面、图片及 js 文件全部静态化;
(2)并发控制,防止秒杀器。比如三道阀门设计、随机 URL 等;
(3)简化流程,减少不必要等分支,甚至可以不访问到数据库;
(4)前段优化,图片合并、html 内容压缩、css 及 js 精简等。
4、优化思路
(1)使用更轻量更快速等服务器;
(2)使用较新等稳定版服务器;
(3)架设山寨版本等 CDN 服务器;
(4)使用反向代理等。
版权声明: 本文为 InfoQ 作者【hunk】的原创文章。
原文链接:【http://xie.infoq.cn/article/87fb4630948ead5145149b96e】。未经作者许可,禁止转载。
评论