第八周作业

用户头像
新世界
关注
发布于: 2020 年 07 月 29 日
第八周作业

垃圾回收的原理



什么时间垃圾回收?

垃圾回收机制是在虚拟机空闲的时候或者内存紧张的时候触发



什么样的对象会被回收?

会回收已经释放掉在内存中没用的对象,比如某个对象没有被任何活跃的线程访问,也没有被任何对象所引用。程序把所有的引用关系看作一张图,从一个节点GC ROOT开始,寻找对应的引用节点,找到这个节点以后,继续寻找这个节点的引用节点,当所有的引用节点寻找完毕之后,剩余的节点则被认为是没有被引用到的节点,即无用的节点



如何回收?

对于没用的对象垃圾回收器是通过标记计数法和根搜索法来判断的



哪些可以作为GC Root?

1.虚拟机栈(栈帧中的本地变量表)中引用的对象;

2.方法区中的类静态属性引用的对象;

3.方法区中常量引用的对象;

4.本地方法栈中JNI(即一般说的Native方法)中引用的对象



秒杀系统设计

秒杀主要解决两个问题: 并发读 和并发写

并发读的核心优化理念是尽量减少用户到服务器端来“读”数据,或者让他们读更少的数据

并发写也是一样的原则,最终目的都是尽量的减少数据库的操作,数据库操作是这个问题的瓶颈点,所以一般会单独独立一个库作 做秒杀操作



在整个从用户请求路径上,从浏览器到服务端尽量遵循几个原则

1、数据量尽量少(能缓存和提前的数据尽量缓存)

动静分离,把静态数据缓存到距离用户最近的地方(用户浏览器、CDN或者服务器端Cache中)

静态数据修改为直接缓存http请求连接,连head 和body都不需要解析

CDN和缓存在浏览器的区别,缓存在浏览器中基本不可控了,缓存在CDN可以主动失效,有一定的控制权

2、请求量尽量少(尽量动态数据才请求,合并请求文件)



3、路径尽量短

静态数据尽量提前推送到CDN



4、依赖尽量少



5、不能有单点



为了满足以上的需求,设计上要尽量的满足: 动静分离、热点的发现与隔离、请求的削峰填谷和分层过滤



减库存的一致性是主要考虑的问题点



发布于: 2020 年 07 月 29 日 阅读数: 10
用户头像

新世界

关注

还未添加个人签名 2018.03.29 加入

还未添加个人简介

评论

发布
暂无评论
第八周作业