오답노트
[Java] 유형에 따른 사용 메모리 정리 본문
유형
변수나 함수가 선언되는 위치에 따라 그 유형이 달라지게 된다.
Local
일정 구역에서만 사용할 수 있는 변수, 함수는 스택 메모리를 사용하게 된다. 호출과 동시에 스택 메모리에 할당되며 지역을 벗어나면 스택 메모리에서 사라지게 된다.
public class LocalTest{
void func(int n){
n += 1;
System.out.println("func : " + n);
}
public static main(String[] args){
int n = 0;
func(n);
System.out.println("main : " + n);
}
}
Member
클래스 내부에서 생성된 변수, 함수는 힙 메모리를 사용하게 된다. 힙 메모리는 동적 메모리로 나중에 가비지 콜렉터가 수거하기 때문에 따로 할당한 메모리를 release할 필요가 없다.
public class Test{
public Test(){
System.out.println("test");
}
}
public class MemberTest{
public static main(String[] args){
Test test = new Test();
}
}
static
global 하게 생성된 변수, 함수는 데이터 영역을 사용하게 된다. 이는 프로그램이 메모리를 할당 받을때 같이 할당 받게된다. 그래서 무분별한 static 변수, 함수를 최소화하여 필요한 만큼만 사용하는 것이 좋다.
public class StaticTest{
static int num = 0;
void func(int n){
n += 1;
System.out.println("func : " + n);
}
public static main(String[] args){
func(num);
System.out.println("main : " + num);
}
}
'Java' 카테고리의 다른 글
[Java] 스트림 (0) | 2023.07.10 |
---|---|
[Java] 람다식 (0) | 2023.07.10 |
[Java] 지역 내부 클래스와 익명 내부 클래스 (0) | 2023.07.10 |
[Java] 추상화 (0) | 2023.07.08 |
[Java] 인터페이스 (0) | 2023.07.08 |