~/tech-blog/category/java-jvm — zsh
지금 --명이 보고 있습니다오늘 --누적 --
홈 / 주제

Java · JVM 27 posts

GC, 스레드, JVM 메모리 구조 등 자바 언어와 런타임을 다룬 글들입니다.

JAVA · JVM

SimpleDateFormat 동시성 문제부터 불변 객체까지

서비스의 날짜 변환 유틸에서 간헐적으로 발생한 ArrayIndexOutOfBoundsException을 추적하며 찾은 SimpleDateFormat 동시성 문제의 원인과 같은 유형의 사례, 불변 객체를 정리합니다.

2026.10.23 · 95f97e5 · Java · JVM — 22 min
JAVA · JVM

데드락의 네 가지 조건과 해결 전략

데드락이 생기는 네 가지 조건과 운영체제의 예방·회피·감지·무시 전략을 정리하고, InnoDB·JVM·tryLock·락 순서 정렬 같은 실제 도구가 각각 어느 전략에 해당하는지 예제 흐름도로 연결합니다.

2026.10.05 · def9f5b · Java · JVM — 8 min
JAVA · JVM

스핀락, 뮤텍스, 세마포

한 프로그램 안의 여러 스레드가 같은 데이터를 건드릴 때 쓰는 스핀락·뮤텍스·세마포를 기다리는 방식과 소유권 차이로 비교하고, 순서 신호와 우선순위 역전까지 예제 흐름도로 정리합니다.

2026.10.04 · f31faa2 · Java · JVM — 7 min
JAVA · JVM

Garbage Collection(GC)

JVM 메모리 구조와 Mark·Sweep·Compaction, 세대별 GC의 동작 원리를 정리하고, Serial GC부터 G1 GC, ZGC까지 주요 GC 알고리즘의 단계와 Stop-The-World 구간을 흐름도로 비교합니다.

2024.09.13 · 20eb3a0 · Java · JVM — 19 min
JAVA · JVM

Garbage Collection 튜닝

jstat으로 GC 상태를 모니터링하는 방법과 Young·Old·Metaspace 영역별 증상에 따른 GC 튜닝 기준을 힙 구조, 튜닝 흐름 그림과 함께 정리합니다.

2024.09.13 · 20eb3a0 · Java · JVM — 9 min
JAVA · JVM

공급자 Supplier<T>

Java의 함수형 인터페이스 Supplier의 정의와 사용법을 예제로 정리하고, 값이 필요한 순간까지 호출을 미루는 지연 초기화에 활용하는 방법을 정리합니다.

2023.11.05 · 20eb3a0 · Java · JVM — 6 min
JAVA · JVM

Stream을 활용한 예제 모음

for문 대신 자바 Stream으로 리스트·맵 변환, enum 값 찾기, 합계, 중복 체크, null 처리, 문자열 합치기, reduce를 작성한 예제를 정리합니다.

2023.05.19 · 20eb3a0 · Java · JVM — 5 min
JAVA · JVM

Collectors.toMap에서 만난 Duplicate Key 예외

Collectors.toMap()으로 Map을 만들 때 키가 중복되면 발생하는 IllegalStateException(Duplicate Key)과, 세 번째 인자인 Merge Function으로 값을 병합해 해결하는 방법을 정리합니다.

2023.03.14 · 20eb3a0 · Java · JVM — 3 min
JAVA · JVM

NPE를 막는 자바 방어 코드 모음

NPE를 막기 위해 사용했던 컬렉션 null 체크(CollectionUtils.emptyIfNull, Optional.ofNullable, isEmpty)와 Lists.partition, Function.identity()로 Map 만들기를 예제와 흐름도로 정리합니다.

2022.11.01 · 20eb3a0 · Java · JVM — 4 min
JAVA · JVM

이미지 다운로드에서 터진 NPE와 방어 코드

프록시 서버를 거쳐 이미지를 받아 오는 코드에서 getBody() null 체크와 RuntimeException catch가 빠져 발생한 NPE의 원인과, 방어 코드·catch 추가로 해결한 과정을 정리합니다.

2022.10.20 · 20eb3a0 · Java · JVM — 3 min
JAVA · JVM

Java 21의 Virtual Thread: 운영체제 개념과 효율성, 장단점 정리

Java 21에서 정식 도입된 Virtual Thread가 Carrier Thread에 mount·unmount되는 방식을 운영체제의 멀티프로그래밍·멀티태스킹·멀티스레딩 개념과 연결해 흐름도로 설명하고, pinning을 포함한 장단점과 사용 시기를 정리합니다.

20eb3a0 · Java · JVM — 12 min
JAVA · JVM

Java 기준 멀티스레드와 레이스 컨디션

Java에서 멀티스레드로 공유 변수를 증가시킬 때 레이스 컨디션이 생기는 과정을 스레드 실행 순서 흐름도로 살펴보고, synchronized·ReentrantLock·AtomicInteger로 해결하는 방법과 volatile의 한계를 정리합니다.

20eb3a0 · Java · JVM — 8 min
● main 231 posts UTF-8 LF © 2026 코징 RSS · GitHub