G1 JVM

G1

  • G1从入门到放弃(一)

  • 详解 JVM Garbage First(G1) 垃圾收集器

  • Region
    * RSet Rememberd Sets, 记录外部指向本Region 的所有引用.
    * Card
    图片名称

  • SATB Snapshot At The Begining
    * 记录活对象
    * 三色标记法

  • pre-write barrier
    * satb_mark_queue

  • 如何知道哪些对象是GC开始之后新分配的呢.
    * top-at-mark-start TAMS
    * preTAMS 和 nextTAMS 两个对象,不是很懂.
    * 不是很懂

  • G1 concurrent marking, bitmap, prevBitmap, nextBitmap
    图片名称
    * 隐式存活, 是什么意思?????

GC

  • Young GC
    图片名称

  • Mixed GC
    * -XX:MaxGCPauseMillis GC收集停顿时间
    * Pause Prediction Model 停顿预测模型
    * XX:InitiatingHeapOccupancyPercent 45%, Old 占用比例
    * 部分 Old 区的收集
    图片名称
    * 好像页面访问下,这个链接就可以用了.

  • Full GC
    * Serial GC
    * 当Mixed GC 的速度赶不上应用程序申请内存的速度的时候.


收集器

  • jvm垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器)

  • SafePoint

  • ParNew
    * Serial 的多线程版本.
    * -XX:+SerialGC
    * -XX:+UseParNewGC
    图片名称

  • Parallel Scavenge 收集器,
    * -XX:+UseParallelGC
    * -XX:+UseParallelOldGC
    * 目标: 吞吐量优先
    * -XX:MaxGCPauseMillis
    * -XX:GCTimeRatio

  • CMS 并发标记清除收集器
    * -XX:+UseConcMarkSweepGC
    * Concurrent Mark / PreClean
    * PreClean 是干嘛的呢, 不是很懂.
    * -XX:+CMSFullGCsBeForeCompaction
    图片名称

  • Garbage First
    * -XX:+UseG1GC
    图片名称


清理算法

  • 复制算法
  • 标记-整理算法

JVM 类加载过程

  • 深入理解JVM的类加载
  • 如果有一个同名字段同时出现在该类的接口和父类中,或同时在自己或父类的接口中出现,编译器可能会拒绝编译。
    * 为什么????
  • Bootstrap Class Loader
    * JRE目录下的, rt.jar, resources.jar, charsets.jar 等jar包和class
  • Extension Class Loader
    * JRE\lib\ext
    * sun.misc.Launcher$ExtClassLoader
  • System Class Loader
    * 也可以成为应用类加载器 ??????
    * sun.misc.Launcher$AppClassLoader

Region 分代

  • -XX:G1HeapRegionSize=n 默认2048 个分区.
  • -XX:GCTimeRatio 即为应用与GC的耗费时间
    * -XX:G1NewSizePercent 5%默认
    * -XX:G1MaxNewSizePercent 60%
    * -XX:MaxGCPauseMillis ,需要扩容的大小以及 分区的已记忆集合RSet.

本地分配缓冲 Local allocation buffer Lab

  • TLAB Thread Local allocation buffer
  • PLAB Promotion Thread Local allocation buffer
posted @ 2020-08-18 11:42  WANGHAO229  阅读(291)  评论(0)    收藏  举报