整理自實戰沉澱的 JVM 學習資源庫,涵蓋核心著作、VM 實現論文、編譯器技術、併發編程、I/O、記憶體管理/GC、監控分析、OS 內核協同、效能工程等九大維度,為 JVM 進階學習者提供結構化導航。
資源分類導覽
📚 核心著作與概覽
- Towards a Renaissance VM
- Oracle JRockit: The Definitive Guide(必讀,系統化 JVM 實現與優化)
- JVM Magic
- 《Java 虛擬機》中文第二版
- Java Language Specification 3.0
- Inside Out: A Modern Virtual Machine Revealed
- HotSpot Overview
- Azul's JVM Experiences
- A Crash Course in Modern Hardware
⚙️ 自適應執行與編譯器技術
- [adaptive] Understanding Adaptive Runtimes / Adaptive Optimization of Java Real-time / Adaptive Optimization in the Jalapeno JVM
- [compiler] The Java HotSpot Server Compiler / Tailoring Graph-coloring Register Allocation For Runtime Compilation / Linear Scan Register Allocation / Design of the Java HotSpot Client Compiler for Java 6
🧵 併發編程與硬體協同
- [concurrent] The Art of Multiprocessor Programming / The Concurrency Revolution: The Hardware Story / Multithreaded Programming Guide / JVM Continuations / java.util.concurrent Synchronizer Framework / Java Concurrency Gotchas / Groovy and Concurrency / Concurrent Programming Without Locks / Concurrency Grab Bag / Alternative Concurrency Paradigms For the JVM / Accelerating Java Workloads via GPUs / A Scalable Lock-free Stack Algorithm / A Concurrent Dynamic Analysis Framework
💾 I/O 與記憶體管理/GC(重頭戲)
- [io] Asynchronous IO Tricks and Tips
- [memory management] Tuning Java Memory Manager / The Ghost in the Virtual Machine: A Reference to References / The Garbage Collection Mythbusters / SuperSizing Java / Step by Step GC Tuning in HotSpot / Parallel GC PPT / Oracle JDBC Memory Management / NUMA-Aware Java Heaps for Server Applications / memorymanagement_whitepaper / Mark-Compact GC PPT / Leak Pruning / GC vs Explicit MM / GC Tuning in the HotSpot / Garbage Collection and Memory Architecture / Richard Jones: Garbage Collection Algorithms For Automatic Dynamic Memory Management (GC 領域聖經)
- [HotSpot GC 論文] Parallel GC for Shared Memory Multiprocessors / G1 Garbage Collector / A Generational Mostly-concurrent Garbage Collector
- [其他 JVM GC] The Pauseless GC (Azul) / Immix: A Mark-Region GC / How to Write a Distributed GC / GC Nirvana: High Throughput And Low Latency Together
🔍 監控、Profiling 與記憶體分析
- [monitoring and profiling] Where Does All the Native Memory Go / What's Happening with My Application: JVM Monitoring Tool / Practical Lessons in Memory Analysis / Monitoring Guide / Microarchitectural Characterization of Production JVMs and Java Workloads / Going Beyond Memory Leaks: Debugging Java from Dumps Using Memory Analyzer / Diagnosing and Fixing Memory Leaks in Web Applications: Tips from the Front Line
🐧 OS 內核與硬體協同(JVM 不能獨立於 OS)
- [osrelated] poll/epoll 深度解析 (1/2) / Memory Systems / 《Linux 內核源代碼情景分析》 / Linux CPU Scheduler / Linux 內核中斷內幕 / Linux System and Performance Monitoring / CPU-Memory 協同
📈 效能工程與基準測試方法論
- [performance] Towards Performance Measurements for invokedynamic / Thinking Clearly About Performance / The Impact of Performance Asymmetry in Emerging Multicore Architectures / The Art of Benchmarking / Techniques for Obtaining High Performance in Java Programs / Pipelining for Performance / Performance Myths and Legends / Performance: Java Versus C / How to Tune and Write Low-Latency Applications on the JVM / How to Get the Most Performance from Sun JVM on Intel Multi-Core Servers / Comparing the Performance of Web Server Architectures / A Common API for Measuring Performance
建議學習路徑
- 入門基石:《Java 虛擬機》中文版 + JLS 3.0 + HotSpot Overview
- 系統化架構:《Oracle JRockit: The Definitive Guide》通讀(建立完整 JVM 實現心智模型)
- GC 專題:Richard Jones 經典教材 + HotSpot GC 核心論文 (Parallel/G1/Gen-Concurrent) + Azul Pauseless/Immix 對比
- 編譯器專題:HotSpot Server/Client Compiler 論文 + Linear Scan/Graph Coloring 寄存器分配
- 併發與硬體:《The Art of Multiprocessor Programming》+ Intel/AMD 微架構手冊 + Linux 內核調度/中斷/內存子系統
- 實戰工具鏈:MAT/JFR/perf/bcc/eBPF + Linux 觀測性工具鏈
- 持續追蹤:JVM Language Summit / OpenJDK 郵件列表 / Azul/RedHat/Oracle 技術部落格
JVM 知識體系龐大且快速演進,建議以「心智模型構建 → 專題深潛 → 實戰驗證 → 社區同步」的螺旋式迭代方式推進。
  References
|— Towards a Renaissance VM
|— Oracle JRockit The Definitive Guide
|— JVM Magic
|— JAVA虛擬機中文第二版
|— Java Lang Spec 3.0
|— Inside Out A Modern Virtual Machine Revealed
|— Hotspot Overview
|— Azul’s JVM experiences
|— A Crash Course in Modern Hardware
|— [ adaptive ]
|— Understanding Adaptive Runtimes
|— Adaptive Optimization of Java Real-time
|— Adaptive Optimization in the Jalapeno JVM
|— [ compiler ]
|— The Java HotSpotTM Server Compiler
|— Tailoring Graph-coloring Register Allocation For Runtime Compilation
|— Linear Scan Register Allocation
|— Design of the Java HotSpotTM Client Compiler for Java 6
|— [ concurrent ]
|— The.Art.of.Multiprocessor.Programming.Mar.2008
|— The Concurrency Revolution The Hardware Story
|— Multithreaded Programming Guide
|— JVM Continuations
|— java.util.concurrent Synchronizer Framework
|— Java Concurrency Gotchas
|— Groovy and Concurrency
|— concurrent programming without locks
|— Concurrency Grab Bag
|— Alternative Concurrency Paradigms For the JVM
|— Accelerating Java Workloads via GPUs
|— A Scalable Lockfree Stack Algorithm
|— A Concurrent Dynamic Analysis Framework
|— [ io ]
|— Asynchronous IO Tricks and Tips
|— [ memory management ]
|— Tuning Java Memory Manager
|— The Ghost in the Virtual Machine A Reference to References
|— The Garbage Collection Mythbusters
|— SuperSizingJava
|— Step by Step GC Tuning in the HotSpot Java Virtual Machine
|— parallel gc ppt
|— Oracle JDBC Memory Management
|— NUMA-Aware-Java-Heaps-for-Server-Applications
|— memorymanagement_whitepaper
|— markcompact_gc ppt
|— Leak Pruning
|— GC Vs Explicit MM
|— GC Tuning in the hotspot
|— Garbage Collection and Memory Architecture
|— Garbage Collection Algorithms For Automatic Dynamic Memory Management – Richard Jones
|— [ Hotspot GC論文 ]
|— Parallel Garbage Collection for Shared Memory Multiprocessors
|— Garbage First Garbage Collector
|— A Generational Mostly-concurrent Garbage Collector
|— [ 其他JVM GC ]
|— The pauseless gc
|— Immix A Mark-Region Garbage Collector
|— How to write a distributed gc
|— GC Nirvana High Throughput And Low Latency Together
|— [ monitoring and profiling ]
|— Where Does All the Native Memory Go
|— What’s Happening with My Application JVM Monitoring Tool
|— Practical Lessons in Memory Analysis
|— MonitoringGuide
|— Microarchitectural Characterization of Production JVMs and JavaWorkloads
|— Going Beyond Memory Leaks Debugging Java from Dumps, Using Memory Analyzer
|— Diagnosing and Fixing Memory Leaks in Web Applications Tips from the Front Line
|— [ osrelated ]
|— poll-epoll_2
|— poll-epoll_1
|— memory systems
|— Linux內核源代碼情景分析
|— linux_cpu_scheduler
|— Linux 內核中斷內幕
|— Linux System and Performance Monitoring
|— cpumemory
|— [ performance ]
|— Towards Performance Measurements for the Java Virtual Machine’s invokedynamic
|— Thinking clearly about performance
|— The Impact of Performance Asymmetry in Emerging Multicore Architectures
|— the art of benchmarking
|— Techniques for Obtaining High Performance in Java Programs
|— Pipelining for Performance
|— Performance myths and legends
|— Performance Java Versus C
|— How to Tune and Write Low-Latency Applications on the Java Virtual Machine
|— How to Get the Most Performance from Sun JVM on Intel? Multi-Core Servers
|— Comparing the Performance of Web Server Arch
|— A Common API for Measuring Performance