직렬화와 역직렬화 기본개념 — 객체를 바이트 열로 펴는 일
메모리 위의 객체를 파일과 소켓이 받을 수 있는 바이트 열로 바꾸는 직렬화가 왜 필요한지, 자바 네이티브 직렬화와 JSON, 프로토콜 버퍼가 무엇을 다르게 하는지 정리한다
메모리 위의 객체를 파일과 소켓이 받을 수 있는 바이트 열로 바꾸는 직렬화가 왜 필요한지, 자바 네이티브 직렬화와 JSON, 프로토콜 버퍼가 무엇을 다르게 하는지 정리한다
71바이트짜리 직렬화 파일을 바이트별로 해부하고, 필드를 하나도 건드리지 않고 게터만 추가해도 serialVersionUID가 바뀌어 역직렬화가 깨지는 것을 JDK 26에서 재현한다
버퍼가 무엇을 줄이는지, 버퍼 크기를 어떻게 정하는지 실측으로 확인한다
하나의 버퍼가 읽기와 쓰기를 겸하는 방식과, heap 버퍼와 direct 버퍼의 차이
weak generational hypothesis 하나로는 설명 안 되는 컬렉터별 동작 차이를, 같은 메모리 압박 상황에서 Serial·Parallel·G1의 실제 GC 로그로 비교해 확인한다
자바 프로그램이 실행되는 과정을 클래스 로딩, 런타임 메모리 영역, 실행 엔진 세 부분으로 정리한다