写点什么

week 9 作业

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

jvm 垃圾回收:

根据可达性判断存活对象,其余的对象可以被回收。thread stack,static 变量是 gc root,从 gc root 搜索可达对象。

对象生命周期有这样的特点:配合新创见的对象生命周期端,存活越久的对象继续存活的可能性更大。所以大部分 gc 算法是分代的,让短期存活的对象在 young gen 被早回收,同时 young gc 可以很频繁,且能回收大量对象,让存活数达到阈值的对象进入老年代,old gen gc 不频繁,能节省在存活对象上反复执行 gc 的开销。

新对象会分配到 young gen 的 eden 区,一次 young gc 后进入 young gen 的 s1/s0 区,young gen 的对象达到一定的存活次数会被存入老年代。

内存回收有 mark and sweep,mark and copy, mark and compact 这几种方式。mark and sweep 无法处理内存碎片,mark and copy 一半要预留一半的内存空间当拷贝的目标区域,比较费内存,最后一种需要移动对象,没有内存碎片,也不需要预留内存,但是移动大量对象的开销大。


设计一个秒杀系统主要挑战和核心问题是啥?

核心问题是限流,把突发流量限制进能正常处理的范围内,对这部分流量正常提供服务,保证系统可用不被压跨。

主要挑战是把不用处理的东西移到系统外围,比如静态资源放到 cdn,不占后端处理资源。消息队列对流量削峰,保护数据库。应用服务器使用异步非阻塞 IO 最大化利用硬件资源。使用 redis/cache 节省应用计算量,能提前判断出不需要进一步处理的请求早点结束处理。

用户头像

Geek_2e7dd7

关注

还未添加个人签名 2018.11.08 加入

还未添加个人简介

评论

发布
暂无评论
week 9 作业