写点什么

第九周 - 命题作业

用户头像
molly
关注
发布于: 2020 年 08 月 03 日

1.请简述 JVM 垃圾回收原理。

JVM垃圾回收就是将JVM堆中的已经不再被使用的对象清理掉,释放宝贵的内存资源。

JVM垃圾回收要解决4个方面的问题:

  • 怎么知道哪些对象要回收?JVM通过一种可达性分析算法进行垃圾对象的识别;可达的对象就是在用的对象;对在用的对象进行标识,没有标识的就是可回收的垃圾对象;

  • 如何回收?(回收有三种方法):清理 - 把垃圾对象清理掉,但清理的缺点:对象清理完会产生很多碎片空间;压缩 - 将后面可用对象从前边的占用空间尾部开始进行拷贝;剩下的就是一段连续空白空间;复制 - 把空间分数两块:从碎片空间把可用的对象拷贝到另一块内存空间中去后,剩下的空间就是连续的空白空间;

  • 回收过程中的内存空间如何管理?(JVM分代垃圾回收):分代 - 就是把堆区域分成了两个区域,分别是:新生代、老年代;新生代 - 绝大多数对象的生命周期是非常短暂的,一个对象一创建就被放在新生代中;新生代回收的速度比较快;老年代 - 较少数的对象会进过较长的时间一直被引用着,这些对象放到老年代;

  • 用什么样的过程进行回收?(JVM垃圾回收器算法):垃圾回收器是一个或者几个线程去承担标记、拷贝、清理等这些动作;比较知名的几种垃圾回收器:串行回收器、并行回收器、并发回收器CMS、G1回收器;



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

技术挑战:

瞬间高并发:

风险:带宽耗尽;

服务器:崩溃,可以理解成自己给自己准备的D.D.O.S攻击;

秒杀器

第一种:秒杀前不断刷新秒杀页面,直到秒杀开始,抢着下单;

第二种:跳过秒杀页面,直接进入下单页面,下单;

核心思路:

开发一个新的秒杀系统

服务器准备:

style服务器(Lighttpd集群)

图片服务器(Nginx集群)

静态服务器(Apache集群)

交易服务器(JBoss动态集群)

带宽准备:

图片出带宽上限

CDN准备



设计原则:

静态化

采用JS自动更新技术将动态页面转化为静态页面

并发控制,防秒杀器

设置阀门,只放最前面的一部分人进入秒杀系统

简化流程

砍掉不重要的分支流程,如下单页面的所有数据库查询

以下单成功作为秒杀成功标志,支付流程只要在1天内完成即可;

前端优化

采用YSLOW原则提升页面响应速度



用户头像

molly

关注

还未添加个人签名 2017.12.14 加入

还未添加个人简介

评论

发布
暂无评论
第九周-命题作业