강의와 책과 스터디

책읽고 스케치) 자바 메모리 영역. 런타임 데이터 영역과 OOM. 스택, 힙 등.

우당탕 오리의 개발모험 2025. 11. 2. 15:28


JVM 책을 다시 읽고 있다.
역시 처음은 메모리 영역 구성.
약간 집합 같은 느낌…ㅎㅎ


프로그램 카운터(pc) 레지스터: 자바 메모리 중 가장 작음. 프로그램 카운터가 저장되는 영역. 스레드 프라이빗. 너무 작고 스레드프라이빗이라(?) OOM 발생 안 함
JVM 힙 메모리: 자바 메모리 중 가장 큼. (거의) 모든 객체와 배열 저장. 모든 스레드 공유. 사이즈는 유동적(-Xmx, -Xms). 새 인스턴스 넣을 공간 없으면 OOM 발생.
JVM 스택: 메서드 호출 시 메서드 모든 정보 저장. 주로 지역변수테이블이 중요. 너무 깊은 스택이면(=메서드 너무 많이 호출하면. 재귀호출등) StackOverflowError 발생. 스택 사이즈 동적일 때 늘릴 수 없으면 OOM발생.
네이티브 메서드 스택: JVM과 비슷. 대신 네이티브 메서드 호출 시 저장.


더 있는데 집 가고 싶어서 여기까지만.

읽은 책: JVM 밑바닥까지 파헤치기

JVM 밑바닥까지 파헤치기 | 저우즈밍 - 교보문고

JVM 밑바닥까지 파헤치기 | 자바 가상 머신의 깊숙한 내부를 향해 떠나는 흥미진진한 모험C·C++를 사용해 주로 프로그래밍을 하던 시절 까다로운 메모리 관리와 플랫폼 이식성 문제는 개발자들에

product.kyobobook.co.kr