- JVM G1源碼分析和調優
- 彭成寒
- 1305字
- 2019-04-22 18:14:49
1.2 本書常見術語
JVM系統非常復雜,市面上有很多中英文書籍從不同的角度來介紹JVM,其中都用到了很多術語,但是大家對某些術語的解釋并不完全相同。為了便于讀者的理解,在這里統一定義和解釋本書使用的一些術語。這些術語有些是我們約定俗成的叫法,有些是JVM里面的特別約定,還有一些是G1算法引入的。為了保持準確性,這里僅僅解釋這些術語的含義,后續會進一步解釋相關內容,本書將盡量使用這里定義的術語。
·并行(parallelism),指兩個或者多個事件在同一時刻發生,在現代計算機中通常指多臺處理器上同時處理多個任務。
·并發(concurrency),指兩個或多個事件在同一時間間隔內發生,在現代計算機中一臺處理器“同時”處理多個任務,那么這些任務只能交替運行,從處理器的角度上看任務只能串行執行,從用戶的角度看這些任務“并行”執行,實際上是處理器根據一定的策略不斷地切換執行這些“并行”的任務。
在JVM中,我們也常看到并行和并發。比如,典型的ParNew一般稱為并行收集器,CMS一般稱為并發標記清除(Concurrent Mark Sweep)。這看起來很奇怪,因為并行和并發是從處理器角度出發,但是這里明顯不是,實際上并行和并發在JVM被重新定義了。
JVM中的并行,指多個垃圾回收相關線程在操作系統之上并發運行,這里的并行強調的是只有垃圾回收線程工作,Java應用程序都暫停執行,因此ParNew工作的時候一定發生了STW。本書提到的***ParTask(例如G1ParTask)指的就是在這些任務運行的時候應用程序都必須暫停。
JVM中的并發,指垃圾回收相關的線程并發運行(如果啟動多個線程),同時這些線程會和Java應用程序并發運行。本書提到的***Concurrent***Thread(例如ConcurrentG1RefineThread)就是指這些線程和Java應用程序同時運行。
·Stop-the-world(STW),直譯就是停止一切,在JVM中指停止一切Java應用線程。
·安全點(Safepoint),指JVM在執行一些操作的時需要STW,但并不是任何線程在任何地方都能進入STW,例如我們正在執行一段代碼時,線程如何能夠停止?設計安全點的目的是,當線程進入到安全點時,線程就會主動停止。
·Mutator,在很多英文文獻和JVM源碼中,經常看到這個單詞,它指的是我們的Java應用線程。Mutator的含義是可變的,在這里的含義是因為線程運行,導致了內存的變化。GC中通常需要STW才能使Mutator暫停。
·記憶集(Remember Set),簡稱為RSet。主要記錄不同代際對象的引用關系。
·Refine,尚未有統一的翻譯,有時翻譯為細化,但是不太準確,本書中不做翻譯。G1中的ConcurrentG1RefineThread主要指處理RSet的線程。
·Evacuation,轉移、撤退或者回收,簡稱為Evac,本書中不做翻譯。在G1中指的是發現活躍對象,并將對象復制到新地址的過程。
·回收(Reclaim),通常指的是分區對象已經死亡或者已經完成Evac,分區可以被JVM再次使用。
·Closure,閉包,本書中不做翻譯。在JVM中是一種輔助類,類似于我們已知的iterator,它通常提供了對內存的訪問。
·GC Root,垃圾回收的根。在JVM的垃圾回收過程中,需要從GC Root出發標記活躍對象,確保正在使用的對象在垃圾回收后都是存活的。
·根集合(Root Set)。在JVM的垃圾回收過程中,需要從不同的GC Root出發,這些GC Root有線程棧、monitor列表、JNI對象等,而這些GC Root就構成了Root Set。
·Full GC,簡稱為FGC,整個堆的垃圾回收動作。通常Full GC是串行的,G1的Full GC不僅有串行實現,在JDK10中還有并行實現。
·再標記(Remark)。在本書中指的是并發標記算法中,處理完并發標記后,需要更新并發標記中Mutator變更的引用,這一步需要STW。
- OpenStack Cloud Computing Cookbook(Third Edition)
- 程序員面試筆試寶典(第3版)
- 自己動手寫搜索引擎
- Building a Home Security System with Raspberry Pi
- Full-Stack Vue.js 2 and Laravel 5
- STM32F0實戰:基于HAL庫開發
- Python機器學習編程與實戰
- 3D少兒游戲編程(原書第2版)
- Mastering Predictive Analytics with Python
- Mastering Apache Spark 2.x(Second Edition)
- 速學Python:程序設計從入門到進階
- C# Multithreaded and Parallel Programming
- Python:Deeper Insights into Machine Learning
- Learning JavaScript Data Structures and Algorithms(Second Edition)
- Python硬件編程實戰