Java垃圾收集的相關知識點索引

前言

最近研究Java的垃圾收集.但看網上的文章.不少說的是java6的事情.如果下工夫不深,很容易被坑.所以,想本身寫一篇垃圾收集的教程.java

可是慚愧慚愧.最近時間並很少.所以只有時間,寫一個知識點索引,但願讀到的人,根據這個知識點,查找相關的內容.不要被網上亂七八糟的網文誤導.等我有時間,也會填充這些內容.把這個索引,變成真正的文章.ui

基本概念

垃圾收集的概念以及必要性.spa

查找垃圾的策略:引用計數,可達性分析3d

清理垃圾的策略:複製,標記-清除,標記-整理blog

垃圾回收器

Java的內存分代以及管理策略:教程

新生代(伊甸園,生存者0,生存者1),老年代索引

能夠關注他們的size分配比例(默認值,以及經過什麼參數配置),以及什麼時候進入下一代.內存

Java7以前:

  • 新生代回收器:Serial、ParNew、Parallel Scavengeget

  • 老年代回收器:Serial Old、Parallel Old、CMSit

重點關注各類垃圾收集器的使用場景,優缺點.

各類垃圾回收器的搭配狀況:

Java7以後:

Java7

整堆回收器:G1

G1收集器,再也不將整塊內存分爲新生代和老年代.而是分爲不一樣的Region,每一個Region都有多是伊甸園,生存者區,老年代.

Java11:

ZGC(關於原理資料較少)

Java12:

Shenandoah(關於原理資料較少)

其它

查看當前JVM用的是什麼垃圾回收器:

java -XX:+PrintCommandLineFlags -version

java8:

-XX:InitialHeapSize=267400832 -XX:MaxHeapSize=4278413312 -XX:+PrintCommandLineFlags -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:-UseLargePagesIndividualAllocation -XX:+UseParallelGC
openjdk version "1.8.0_201-2-redhat"
OpenJDK Runtime Environment (build 1.8.0_201-2-redhat-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)

java11:

-XX:G1ConcRefinementThreads=10 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=267400832 -XX:MaxHeapSize=4278413312 -XX:+PrintCommandLineFlags -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC -XX:-UseLargePagesIndividualAllocation openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

相關文章
相關標籤/搜索