Week 09- 作业一:JVM 垃圾回收原理
请简述 JVM 垃圾回收原理。
1. 确认可回收对象
JVM 垃圾回收就是将 JVM 堆中的已经不在被被使用的对象清理掉,释放宝贵的内存资源。
JVM 通过一种可搭配性分析算法进行垃圾对象的识别,具体过程是:从线程栈帧中的局部变量或者是方法区的静态变量出发,将这些变量引用的对象进行标记,然后看这些被标记的对象是否引用了其他对象,继续进行标记,所有被标记过的对象都是被使用过的对象,而那些没有被标记的对象就是可回收的垃圾对象了。
2. 垃圾回收
JVM 会对垃圾进行分代回收,主要回收方法包括:清理、压缩、复制
在分代机制中,将应用程序的堆分为 年轻代(Young Generation)和老年代(Old Generation)
年轻代又被分为(Eden 区)、Survivor 区(From”区、“To”区)
一个普通的 java 对象,出生在 Eden 区,在 Eden 区我还看到和我长的很像的小兄弟,我们在 Eden 区中玩了挺长时间。有一天 Eden 区中的人实在是太多了,我就被迫去了 Survivor 区的“From”区,自从去了 Survivor 区,我就开始漂了,有时候在 Survivor 的“From”区,有时候在 Survivor 的“To”区,居无定所。直到我 18 岁的时候,爸爸说我成人了,该去社会上闯闯了。于是我就去了年老代那边,年老代里,人很多,并且年龄都挺大的,我在这里也认识了很多人。在年老代里,我生活了 20 年(每次 GC 加一岁),然后被回收。
在 GC 时会 STOP-THE-WORLD,此时所有线程处于停顿状态,也就是常说的 GC 停顿,为了减少 GC 停顿的时间,GC 算法进行了一步步的演化,串行回收器--->并行回收器--->并发回收器 CMS--->G1 回收器
以上即为 JVM 垃圾回收的基本原理,总和来说就是 标记--->清理 用户堆内存的过程。
设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?
1. 主要挑战
保证三高
系统高并发
系统高可用
系统的高性能
系统安全
防黑客攻击/秒杀器
2.主要问题
网络带宽耗尽
运营推广页面导致带宽耗尽
应用服务器资源不足
Load 飙高,停止响应,服务器崩溃
数据库服务器资源足
恶意请求
秒杀器抢单
3.解决思路
网络资源
资源静态化;
限制大小;
应用服务资源
设置请求阀值;
简化流程;
启用缓存、异步、集群;
数据库资源
启用缓存、异步、集群;
安全问题
程序关键要素动态下发;
硬件防火墙
版权声明: 本文为 InfoQ 作者【dean】的原创文章。
原文链接:【http://xie.infoq.cn/article/31c89073c0dcc66766b6778bf】。文章转载请联系作者。
评论