JVM 22
- 클래스 로딩과 기동 시간 - 리플렉션의 비용과 AOT가 바꾸는 것
- 직접 만든 마이크로벤치마크는 얼마나 틀리는가 - 결함 넷을 하나씩 재봤다
- 카카오 「메시징 서버의 스트레스 테스트 노하우와 AI가 덜어 준 부분」 리뷰 — 지표를 네 층으로 내려가 읽는 법, 그리고 LLM에게 맡긴 것과 맡기지 못한 것
- JIT 컴파일 - 계층 컴파일, 인라이닝, 역최적화
- CPU 프로파일러가 1순위로 지목한 코드를 고쳤더니 아무 일도 없었다
- 가상 스레드를 켜서 37배 느려진 엔드포인트 - 핀닝과 상한 없는 admission을 재다
- G1과 ZGC가 p99에 남기는 차이 - 300배 짧은 pause가 꼬리의 11%를 가져갔다
- GC 알고리즘 비교 - G1, ZGC, Shenandoah가 각자 무엇을 포기하는가
- SLASH 23 리뷰 - 프로파일러로 시스템 성능 향상시키기: Pinpoint, 힙 덤프, jemalloc, async-profiler, strace, 그리고 커널 버전
- 가상 스레드의 내부 - 스케줄러와 캐리어, 핀닝, 그리고 쓰지 않아야 할 때
- 동시성 도구의 비용 - synchronized, ReentrantLock, CAS가 경쟁에서 갈리는 지점
- SLASH 22 리뷰 - Java Native Memory Leak 원인을 찾아서: RSS와 NMT의 2GB 차이, jemalloc 프로파일, C2 컴파일러, Graal JIT
- 자바 메모리 모델 - happens-before, volatile, 그리고 final의 안전 공개
- SLASH 21 리뷰 - SRE 사례 소개: Redis 리밸런싱 ASK 에러, Memcached 재분배 실패, Prometheus가 바꾼 GC 패턴
- Java의 Garbage Collection을 어떻게 이해해야 할까
- JMX와 MBean, 그리고 Micrometer가 지표를 얻는 길 - MBean이 없으면 지표는 0이 아니라 없다
- thread dump 읽는 법 - 스레드 상태와 스택 프레임, 그리고 RUNNABLE이 CPU를 쓴다는 뜻이 아닌 이유
- 다이렉트 메모리와 Cleaner - 힙 밖의 버퍼는 누가 언제 해제하는가
- JVM은 무엇을 하는가
- Garbage Collectors
- Garbage Collection(GC)
- Choosing the Best Garbage Collector: G1GC vs ZGC