티스토리 뷰

728x90
반응형

대략 네 달쯤 전에, JVM의 기본 구조에 대해 다루면서 스택과 힙에 대해 다루기는 했다.

 

2022.12.11 - [Development/Technical Interview] - [면접 준비 - Java]JVM 구조(2), Runtime Data Area

 

[면접 준비 - Java]JVM 구조(2), Runtime Data Area

지난 글에선 JVM의 대략적인 구조와 Workflow에 대해 알아보았다. 2022.10.30 - [Development/Technical Interview] - [Java]JVM 구조(1), JVM Workflow [Java]JVM 구조(1), JVM Workflow JVM(Java Virtual Machine) JVM(Java Virtual Machine)이

gnidinger.tistory.com

 

하지만 특히나 스택과 힙은 직접 개발하며 마주칠 일이 많은데다

 

따로 떼어서라도 조금 더 자세히 알고 있는 게 좋을 것 같아서

 

둘을 비교하는 글을 올려두기로 했다.

 

Stack Memory vs. Heap Memory

 

들어가기 전에 둘의 공통점을 짚자면, 너무나 명백하게도 둘 다 프로그램에서 할당하는 메모리 영역이다.

 

하지만 그 목적과 기능 및 할당되는 방식까지 아주 다르기 때문에, 둘을 비교하는 것도 어찌 보면 이상한 일일지도.

 

그래도 하나씩 정리해 보자.

 

  Stack Memory Heap Memory
구조 스택(후입선출) GC에 의해 세대별 관리
주소 상위→하위 주소로 할당 하위→상위 주소로 할당
할당 방식 스레드마다 독립적으로 자동 할당 스레드간 공유되며 수동(동적) 할당
다중 스레드 Thread Safe synchronized와 같은 추가 처리 필요
속도 스레드 내부 할당이라 상대적으로 빠름 공유 메모리이기 때문에 상대적으로 느림
할당 시점 메서드 호출시 객체 생성시
저장 대상 메서드의 지역변수 및 매개변수 동적으로 생성된 객체
크기 컴파일시 정해짐. 이후 바꿀 수 없음. 일반적으로 작음 동적으로 할당. 객체의 크기에 따라 다름. 일반적으로 큼
기본 크기 1MB, -Xss옵션을 통해 조절 가능  
수명 메서드 동작이 끝나는 즉시 자동으로 제거 수동으로 해제. GC가 검사 후 해제.
메모리 누수 없음 있음
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함