写点什么

架构师训练营 第 9 周作业

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


JVM 垃圾回收能够释放不被使用的内存空间,腾出宝贵的内存资源。

JVM 利用可达性算法分析对象。从线程堆栈或方法区的对象引用开始查找,对其引用的对象进行标记,未被引用的即是垃圾回收的对象。

垃圾回收有三种方式:

  • 清理:直接删除垃圾对象;

  • 压缩:拷贝存活的对象到连续空间,其余则是连续的空闲空间;

  • 复制:规定创建对象的专用内存空间,该空间用完则拷贝上面的对象到另外的空间上;

另外,JVM 还将内存进行分代管理,将新创建的内存放在新生代,多次未被回收的对象放在老年代,一般会较频繁地检查新生代对象,因为新创建的对象往往周期短。这样能提高垃圾回收的效率。

垃圾回收器算法主要有:

  • 串行,开单个线程进行垃圾回收,适用于早期单核机器;

  • 并行,多线程垃圾回收,利用了多核 CPU;

  • 并发,不中断系统进行垃圾回收;

  • G1 回收器,对内存空间进行分块,有针对性的回收和对象创建,提高效率;


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


秒杀系统往往会面对以下挑战和问题:

  • 瞬时高并发带来的带宽、数据库、性能压力

  • 秒杀逻辑的安全可靠,且保证公平

为了应对上述问题,需要一些架构思路:

  • 静态资源加速,可用 CDN 加速网页、图片、资源文件等;

  • 缓存加速,类似 CDN,一般可以是业务数据的缓存;

  • 限流,控制各个环节的并发,比如课程分享的三级阀门:秒杀页面限流、下单页面限流、支付系统限流;

  • 简化流程,砍掉非必要的部分,减少系统压力,避免短板;

  • 安全:前端逻辑支持,防止提前刷单等;

  • 应急预案:作好最坏的情形下的应对策略,有备无患;


用户头像

Glowry

关注

还未添加个人签名 2019.02.13 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 第9周作业