写点什么

Week 09- 作业一:JVM 垃圾回收原理

用户头像
dean
关注
发布于: 2020 年 08 月 05 日

请简述 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.解决思路

  • 网络资源

资源静态化;

限制大小;

  • 应用服务资源

设置请求阀值;

简化流程;

启用缓存、异步、集群;

  • 数据库资源

启用缓存、异步、集群;

  • 安全问题

程序关键要素动态下发;

硬件防火墙


发布于: 2020 年 08 月 05 日阅读数: 50
用户头像

dean

关注

还未添加个人签名 2019.11.06 加入

还未添加个人简介

评论

发布
暂无评论
Week 09- 作业一:JVM垃圾回收原理