Java Internals & Concurrency/Tổng quan module — JVM Internals
47/75
Bài 47 / 75~5 phútJVM InternalsMiễn phí lượt xem

Tổng quan module — JVM Internals

Bản đồ module JVM Internals: class loading, bytecode, JIT compiler, bố cục bộ nhớ, object layout, garbage collector hiện đại, safepoint và bộ tools chẩn đoán.

Code Java của bạn không chạy trên CPU — nó chạy trên một máy ảo với bộ nạp class riêng, trình biên dịch riêng bật giữa chừng, bộ nhớ tự quản lý và những khoảnh khắc cả thế giới đứng im (stop-the-world) mà GC log không kể hết. Ngày thường bạn không cần biết; ngày production chậm bất thường, OOM lúc 2 giờ sáng, hay "X cannot be cast to X" trên Tomcat — tầng bên dưới này là nơi câu trả lời sống.

Module này mở nắp JVM theo bốn cụm: class loading (nạp class thế nào, vì sao lỗi), thực thi (bytecode → interpreter → C1/C2, các tối ưu và deoptimization), bộ nhớ (heap generational, metaspace, object layout, compressed OOP), và GC + chẩn đoán (ba thuật toán nền, chọn collector theo SLA, G1/ZGC/Shenandoah, safepoint, jcmd/JFR). Mục tiêu: khi production đi sai, bạn biết hỏi đúng câu và đọc đúng log.

Bản đồ module

flowchart TD
    A["Class loading<br/>01 - 01b - 01c"] --> B["Bytecode va javap<br/>02 - 03"]
    B --> C["JIT compiler<br/>04 - 04b - 04c"]
    C --> D["Escape analysis<br/>10"]
    E["Bo nho JVM<br/>05 - 05b"] --> F["Object layout<br/>09 - 09b"]
    E --> G["GC + chon collector<br/>06 - 06b"]
    G --> H["G1 / ZGC / Shenandoah<br/>12 - 12b"]
    G --> I["Safepoint va STW<br/>11"]
    J["Tools chan doan<br/>07 - 08"] --> K["13. Mini-challenge<br/>debug memory leak"]

Bạn sẽ đạt được gì

Học xong module này, bạn có thể:

  • Explain cách JVM nạp class qua hierarchy ba tầng và parent delegation
  • Diagnose lỗi classloading trong container: ClassNotFoundException vs NoClassDefFoundError và "X cannot be cast to X"
  • Trace cấu trúc class file và bytecode một method bằng javap — từ constant pool tới invokedynamic
  • Trace đường biên dịch một method từ interpreter qua C1/C2 cùng các tối ưu inlining, devirtualization, escape analysis
  • Diagnose độ trễ sau deploy bằng JIT log — phân biệt deoptimization với warm-up
  • Explain bố cục bộ nhớ JVM (heap generational, metaspace, stack, native) và chữ ký lỗi bộ nhớ từng vùng
  • Explain object layout (header, mark word, field packing, compressed OOP) để ước lượng footprint object
  • Explain nguyên lý GC (reachability, ba thuật toán nền, generational) và cơ chế sâu G1, ZGC, Shenandoah
  • Justify lựa chọn GC collector bằng latency SLA và bằng chứng GC log
  • Diagnose pause STW dài hơn GC log báo cáo qua safepoint/TTSP và verify bằng JFR + CLI tools

Cần chuẩn bị trước

  • Đã học xong hai module đầu của course — đặc biệt Concurrency cơ bản (thread, lock — xuất hiện lại ở safepoint và GC concurrent) và biết dùng terminal để chạy java/javap với flag.
  • Không cần biết trước C/C++ hay assembly — mọi cấu trúc nội bộ đều được vẽ và giải thích tại chỗ.

Lộ trình bài học

BàiNội dung
01. Class loaderHierarchy ba tầng + parent delegation
01b. Vòng đời classLoad → link → initialize; CNFE vs NoClassDefFoundError
01c. Classloader isolation"X cannot be cast to X" trong Tomcat/Spring Boot
02. Class file và javapMagic number, constant pool, đọc bytecode
03. invoke và invokedynamicBốn lệnh invoke + cơ chế đằng sau lambda
04. JIT tiered compilationInterpreter → C1 → C2, counter, OSR
04b. Inlining và devirtualizationInline cache, type profile
04c. Deopt, JIT log và warm-upUncommon trap, đọc JIT log, CDS/AOT
05. Heap generationalEden/Survivor/Old, bump-the-pointer, TLAB
05b. Ngoài heapMetaspace, stack, native + chữ ký OOM từng vùng
06. Garbage collection nền tảngReachability, ba thuật toán, generational
06b. Chọn collector, đọc GC logChọn theo SLA + xác nhận bằng log
07. CLI toolsjcmd, jstat, jmap, jstack
08. JFR và profilingJava Flight Recorder, overhead thấp
09. Object headerMark word, field layout, JOL
09b. Compressed OOPEncoding và 32GB cliff
10. Escape analysisScalar replacement, lock elision
11. Safepoint và STWVì sao pause dài hơn GC log báo cáo
12. G1 deepRegion, SATB, RSet, humongous, tuning
12b. ZGC và ShenandoahColored pointer, read vs write barrier
13. Mini-challengeDebug memory leak thật bằng cả bộ tool

Bài tiếp theo: Class loader — hierarchy ba tầng và parent delegation

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Bài này có giúp bạn hiểu bản chất không?

Hỏi đáp về bài này

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên

Bài tiếp theo

ClassLoader hierarchy — ba tầng và parent delegation