Nguồn: blog.bytebytego.com

Tóm tắt

Newsletter EP211 của ByteByteGo tổng hợp nhiều chủ đề system design, trọng tâm là kiến trúc JVM (Java Virtual Machine). JVM là một layered runtime: bytecode được compile từ Java source, sau đó được interpreter thực thi hoặc JIT-compiled sang native machine code ở hot paths. Class loading, memory model (heap/metaspace/stack), và garbage collection là ba thành phần kiến trúc chính cần hiểu.

JVM heap được chia thành các generation: Young Generation (Eden + Survivor spaces) chứa object mới, Old Generation (Tenured) chứa object sống lâu. GC hoạt động theo mô hình generational hypothesis: phần lớn object chết sớm, nên Minor GC (chỉ scan Young Gen) là thao tác rẻ và thường xuyên, trong khi Full GC (scan toàn heap) cần tránh tối đa.

Newsletter cũng đề cập đến load balancer internals và optimistic vs pessimistic locking — hai chủ đề kinh điển trong distributed systems. Optimistic locking phù hợp với low-contention workload (check conflict lúc commit, retry nếu cần), còn pessimistic locking dùng khi conflict rate cao và cost of retry lớn hơn cost of waiting.

👉 Đọc bài gốc