티스토리 뷰

Stack 영역과 Heap 영역의 차이를 간단히만 알아보겠다.
- Stack 영역
우리가 알고있는 기본데이터형 (원시타입 byte,short,int,long,float,double,char,boolean) 지역변수,매개변수 들이
저장되는 임시영역 과도 같다( 실행되고 종료되면 바로 소멸되기때문이다. )
즉.메소드가 호출되면 -> 그메소드의 변수를 준비하고 -> 메소드호출이 끝나면 준비되었던 변수들이 Stack Area 에서 삭제된다
- Heap 영역 (레퍼런스 타입,)
원시타입,클래스변수,클래스 제외한 데이터는 Heap Area 저장된다생각하면 된다.
( new 명령어를 통해 생성된 객체(인스턴스) ,배열 등 )
Stack 영역과 다르게 메소드 호출이 끝나도 바로 사라지지않고 Heap Area 에 남아있다.
그러다가 Hash Code 를 갖고있는 인스턴스 변수 가 더이상 사용되지않는다면
쓰레기 데이터로 생각되어 가비지 컬렉터 에 의해서 제거되거나 ,JVM 종료시 할당된 메모리가 해제된다.
여기서 참조변수와 참조값에 대해 알아야한다.
참조변수 는 객체 화 될때 담긴그릇 이라면
참조값은 그 그릇위에 실제음식이라고 생각하면된다
참조변수는 객체생성될때 Stack 에 임시저장되는데 이때 Heap 영역에서 실제값을 찾을수있는 Hash Code 를 받아서
Stack 에서 임시 대기한다.
호출이 되면 Stack 에 저장된 참조변수가 Hash Code 를 통해 Heap 영역에 있는 실제 참조값에 접근할수있다.
다시 정리하자면
객체생성할때 만들어진 참조변수를 사용하지않거나 삭제를하면
Stack 에 Hash코드를 담고있는 참조변수는 금방해지되어도 이미 Heap 영역에 저장된 참조값은 가비지컬렉터에 의해 메모리해지
당하거나 JVM 실행 종료 하기전까진 남아있다.
'Java' 카테고리의 다른 글
| Java static 메서드 (0) | 2022.04.07 |
|---|---|
| Java 메소드 오버로딩( Method overloading ) (0) | 2022.04.07 |
| Java ( method Area 공유되는 영역 ? Heap Area 각각의 영역? ) (0) | 2022.04.06 |
| Java ( Scanner.hasNext() Scanner.nextLine() ) 차이 (0) | 2022.04.06 |
| Java( While 문과 for 문 에 Continue를 사용할 때 차이점) (0) | 2022.04.06 |
- Total
- Today
- Yesterday
- Method 영역
- 클래스변수 인스턴스변수 차이
- 자바
- redux
- publi
- 기본형타입
- set
- mapDispatchToProps
- Stack Area
- Heap Area
- java 배열 출력
- java숫자형배열
- java 예외
- e.getMessage()
- nexLine
- java최대값최소값
- Java
- java멤버변수
- final 변수 초기화
- Dispatch
- List Set 변환
- map set 변환
- java전역변수
- e.printStackTrace()
- e.toString()
- java문자열배열
- Scanner 와 BufferedReader 차이
- 클래스영역
- 오버로딩
- react-redux
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 | 31 |