컴공생의 다이어리
[자바, Java] 변수의 유효 범위와 메모리 본문
변수의 유효 범위와 메모리
변수가 유효한 범위와 생성되고 소멸되는 life cycle은 변수의 종류마다 다르다. 또한 변수마다 사용되는 메모리도 다르다.
변수 유형 | 선언 위치 | 사용 범위 | 메모리 | 생성과 소멸 |
지역 변수 (로컬 변수) |
함수 내부에 선언 | 함수 내부에서만 사용 | 스택 | 함수가 호출될 때 생성되고 함수가 끝나면 소멸 |
멤버 변수 (인스턴스 변수) |
클래스 멤버 변수로 선언 | 클래스 내부에서 사용하고 private이 아니면 참조 변수로 다른 클래스에서 사용 가능 | 힙 | 인스턴스가 생성될 때 힙에 생성되고, garbage 컬렉터가 메모리를 수거할 때 소멸됨 |
static 변수 (클래스 변수) |
static 예약어를 사용하여 클래스 내부에 선언 | 클래스 내부에서 사용하고 private이 아니면 클래스 이름으로 다른 클래스에서 사용 가능 | 데이터 영역 | 프로그램이 처음 시작할 때 상수와 함께 데이터 영역에 생성되고 프로그램이 끝나고 메모리를 해제할 때 소멸됨 |
- static 변수는 프로그램이 메모리에 있는 동안 계속 그 영역을 차지하기 때문에 너무 큰 메모리를 할당하는 것은 좋지 않음
출처 : 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
728x90
'Development > Java' 카테고리의 다른 글
[자바, Java] 클래스 상속(class inheritance) (0) | 2021.08.18 |
---|---|
[자바, Java] ArrayList (0) | 2021.08.17 |
[자바, Java] static 변수와 static 메서드 (0) | 2021.08.15 |
[자바, Java] 접근 제어 지시자(access modifier) - private, default, protected, public (0) | 2021.08.14 |
[자바, Java] 오버로딩(Overloading)과 오버라이딩(Overriding) (0) | 2021.08.13 |
Comments