写点什么

架构师 0 期第九周命题作业

用户头像
何伟敏
关注
发布于: 2020 年 08 月 06 日

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

JVM把堆内存分为新生代么老年代,新生代分为Eden区,From以及To区。对象的创建是在Eden区中分配空间。当Eden区内存满了,将触发minor GC,JVM从GCRoot扫描对象的可达性,没有被扫描到的对象(即没有被引用)的空间被回收,并且把Eden区的对象拷贝到From区。

当Eden区和From区内存都满了,也会触发垃圾回收机制,此时虚拟机将回收没被引用的内存,并且将没被回收的对象拷贝到To区。当下一次触发GC时,未被会回收的对象又会被拷贝到From区。长时间存活的对象会在From区和To区来回拷贝,当到达一定的次数后,对象将会被拷贝到老年代。当老年代内存满了,会触发Full GC。

不管是Minor GC还是Full GC,都会stop the world,所有除了GC以外的线程都会被暂停。



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

主要的挑战和问题包括:

  • 网络带宽耗尽

  • 服务器Load高,停止响应

  • 数据库瘫痪



核心的架构方案和思路:

静态化:

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

并发控制,防秒杀器:

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

简化流程:

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

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

前端优化:

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



用户头像

何伟敏

关注

还未添加个人签名 2018.03.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师0期第九周命题作业