본문 바로가기

JAVA

힙과 스택 메모리의 차이점

1.힙 메모리는 애플리케이션의 모든 부분에서 사용되며, 반면에 스택 메모리는 하나의 스레드가 실행될 때 사용.

그래서 힙과 메서드 공간에 저장된 객체는 어디서든지 접근이 가능하지만, 스택 메모리는 다른 스레드가 접근할 수 없다.

2.언제든지 객체가 생성되면 항상 힙 공간에 저장되며, 스택 메모리는 힙 공간에 있는 객체를 참조만 한다.

즉, 스택 메모리는 primitive 타입의 지역변수와 힙 공간에 있는 객체 참조 변수만 갖고 있다.

3.스택메모리의 생명주기는 매우 짧으며, 힙 메모리는 애플리케이션의 시작부터 끝까지 살아남는다.

4.자바 코드를 실행할 때 따로 -Xms과 -Xms 옵션을 사용하면 힙 메모리의 초기 사이즈와 최대 사이즈를 조정할 수 있다.

5.스택 메모리가 가득차면 자바에서는 java.lang.StackOverFlowError를발생

힙 메모리가 가득차면 java.lang.OutOfMemoryError: Java Heap Space 에러를 발생

6.스택 메모리 사이즈는 힙 메모리와 비교했을 때 매우 작다. 하지만 스택 메모리는 간단한 메모리 할당 방법(LIFO)를 사용하므로 힙 메모리보다 빠르다.

'JAVA' 카테고리의 다른 글

추상 클래스의 용도?  (0) 2022.10.18
Arrays 클래스  (0) 2022.10.07
스택 프레임(stack frame)  (0) 2022.10.05
HashMap에 대하여  (0) 2022.07.06
HashMap 동작 방식에 대해 설명하세요.  (0) 2022.06.19