JAVA 메모리 영역
• Stack 영역
- 함수의 호출과 관계되는 지역변수와 매개 변수가 저장되는 영역
- 메소드가 호출될 때 메모리에 할당되고 종료되면 메모리가 해제된다.
• Heap 영역
- 참조형의 데이터 객체의 실제 데이터들이 담기는 영역
- Heap 영역의 참조 값을 Stack 영역의 객체가 갖고 있다.
- 메모리 공간이 동적으로 할당되고 해제된다.
• Data(Static) 영역
- 전역 변수와 정적(Static) 변수가 저장되는 영역
- 메모리상에 한번 할당되면 프로그램이 종료될 때 해제 된다.
예제
// StaticVar.java
public class StaticVar {
// 멤버 변수가 static일 경우, data(static) 영역에 저장
static int a = 1;
// 멤버 변수는 heap 영역에 저장
int b = 1;
void staticTest() {
a = a + 1;
b = b + 1;
System.out.println("static int a : " + a);
System.out.println("member int b : " + b);
}
}
// StaticMain.java
public class StaticMain {
public static void main(String[] args) {
// TODO Auto-generated method stub
StaticVar v1 = new StaticVar();
v1.staticTest();
StaticVar v2 = new StaticVar();
v2.staticTest();
v2.staticTest();
}
}
* Stack 영역에 저장된 static 변수는 할당된 값에서 초기화되지 않고 더해진 것을 확인할 수 있다.
'JAVA' 카테고리의 다른 글
[ JAVA / 자바 ] 클래스의 멤버변수에 데이터를 세팅하는 방법 (0) | 2022.07.04 |
---|---|
[ JAVA / 자바 ] 생성자 사용법과 생성자 오버로딩 (0) | 2022.07.01 |
[ JAVA / 자바 ] 멤버 변수와 지역 변수, this 사용법 (0) | 2022.07.01 |
[ JAVA / 자바 ] 메소드 오버로딩(Method Overloading) 이란? (0) | 2022.07.01 |
[ JAVA / 자바] 배열 초기화 방법 (0) | 2022.07.01 |