写点什么

第 9 周命题 JVM 回收 & 秒杀

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



  • 请简述 JVM 垃圾回收原理。

目前JVM是用可达性分析来完成无用对象的标识,根可达是指有由堆外指向堆内的索引,例如main函数是最主的根,它的成员变量也是根,运行时栈内指向堆的对象就是可达的,否则堆内的对象就是不可达的。可达的对象将标识下来。

堆内存空间分为Eden区,survive区和老年区,新的对象在eden区中诞生,miniGC后把还可达的对象迁移到survive区,eden区清空。几次miniGC后,survive还存在的对象将迁移到老年区,如果在eden区迁移到survive区的对象太大,将直接引发fullGC把对象扔到老年区。



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

主要应对的是高并发的问题,数据一致性的问题,DDOS攻击的问题

思路是减少访问的流量和计算。

首先是秒杀前,需要把访问尽量放在本地缓存和cdn中,减少中心数据区的压力

然后秒杀开始时,需要控制进入购买商品的访问量,同一个ip访问的频率,这些nginx都可以做到

商品秒杀时需要做好产品数量的原子性,防止超卖,redis可以满足在分布式环境中的数据原子性

商品买卖过程中使用最终一致性算法,避免长时间的资源占用,可以使用mq来完成业务

再就是秒杀时资源的使用,可以临时把其他应用的响应降级,把资源都放到秒杀上



用户头像

慵秋

关注

还未添加个人签名 2018.03.21 加入

还未添加个人简介

评论

发布
暂无评论
第9周命题JVM回收&秒杀