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 作业