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 |