[图片] 本文知识点 STW(Stop the world)的概念 安全点的概念 GCRoots 的概念 Remember Set (记忆集) 本篇内容以概念为主,先了解概念,知道有哪些名词,东西, 再实战看里面的东西去加深理解 GC 总述 Java 在运行时,生成的对象都在堆里存放着,有些对象的生命周期很短,只几行代 ..

JVM | 老婆孩子热炕头 -GC 收集器概念篇

本文知识点

本篇内容以概念为主,先了解概念,知道有哪些名词,东西, 再实战看里面的东西去加深理解

GC 总述

Java 在运行时,生成的对象都在堆里存放着,有些对象的生命周期很短,只几行代码运行完就没用了。没用了之后不能放任他在堆里, 要进行回收,把空间空出来,给后面的对象。

我们常用收拾屋子来比喻 jvm 清理堆。这里, 我们不仅仅有个房子, 我们还可以想得再大胆一些,天降一女侠当老婆,是家里的一把手,掌管整个家。 不久,又天降一大胖小子, 小子性格独立,也有自己的一块小空间。然后小刀就要开始打扫卫生,收拾房子了!

GC 相关概念

STW(Stop the world)

于生活中, 就是我要开始打扫卫生了, 大家先别动,让我看看哪些东西是现在女侠和小子没有在用的,又散落在外面占用空间, 当然我也不敢让她们停太长时间, 所以趁他们停下来的时候,赶紧扫一眼,先把他们手上没有用到的东西记下来, 然后赶紧让她们继续玩乐。

于 JVM 中,就是应用先停下来,然后 GC 工作线程,赶紧扫描一遍,看看哪些对象是还有用,哪些是没用的

安全点

这里其实是两个概念, 一个是安全点, 一个是安全区域。 都是描述 STW 发生的时机, 要让 STW 发生的时候,系统的对象引用关系不会改变。

在我要喊停女侠和小子的时候, 如果我一喊相当于按了定时器,把她们都定住了,然后我发现女侠还在倒水, 不太好, 只先解锁女侠的锁定, 让她倒完水再停。 这是抢先式中断现在生活中, 很少有这样的。

更多的场景是, 她们的耳朵一直听着我有没有说话(轮询状态), 我一喊停。 然后她们赶紧把手里面的活停下来,或者去沙发坐着,或者去床上躺着等自己最近的安全点上主动停下。

安全区域: 如果我喊停的时候, 小子刚好在睡觉(线程在休眠,或者阻塞). 虽然没有听到我喊的停,但也是安全的。

GCRoots

有句话说是, 擒贼先擒王,要抓住事物的主要矛盾! 当家里的东西很乱的时候, 要问问女侠和小子是怎么回事, 过去一看, 好家伙, 原来女侠在教小子识物学字。 学一个字,找一个对应的物品。 这时候, 本扫地的只要拿着那个小本子看一看, 就能顺着找到哪些是要用的 ,哪些是已经没用的了。

在 JVM 中, 有一个根对象的概念, 就是堆里面的东西和他们有关系的就是要用的, 没有关系的,就是可以回收的了。我们来这样分类记忆

先是和类相关的:

  1. 类静类属性引用的对象

然后是和实例相关的:

  1. 虚拟栈中使用到的参数,局部变量,临时变量

  2. JNI 中引用的对象

然后是 JVM 层面的:

  1. 常量引用的对象,如字符串常量池里的引用

  2. 所有被 synchronized 持有的对象

  3. 虚拟机内部的引用,如 Class 对象, 常驻内存的异常对象,系统类加载器等等

RemberSet 记忆集

纵观现在对大数据量的处理,大都是分而治之, 划区而治。 那区与区之间不可能为了查 A 区的某条信息,把整个 B 区都查一遍。

如小刀我现在在上海工作, 女侠在成都。那么在上海就会有个记忆集,里面存着, 有成都某某区某某街(精确度有不同的实现)到小刀的一条引用关系。

那哪一天上海要统计人员的时候, 来找到小刀了, 我说我在成都哪里哪里还有人, 那统计人员就到那个区域查一查, 看我有没有说慌。 如确实有引用关系, 好,那小刀还有人关心着, 让他继续工作吧。 要是一查,发现没有这个引用关系, 得了, 没人要的小刀, 可以关进小黑屋喽~!

总结

本篇是纯理论知识,但理论也是从生活中总结出来的。 因此在学习时,还是要多多联系实际, 概念记不住,我们就记生活场景! 加油!!

  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    122 引用 • 114 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2584 引用 • 7983 回帖 • 803 关注
回帖
请输入回帖内容...