개발지식/Java

[Java] 변수와 자료형

감발자 2023. 12. 20. 19:49

변수의 생존기간

변수의 생존기간은 메모리에서 변수가 만들어진 이후 사라지기까지의 기간을 의미한다. 자바에서 개발자가 직접 변수를 생성하지만, 삭제는 JVM이 한다. 따라서 메모리에서 변수가 사라지는 시점을 잘 이해해야 한다!!

 

먼저 변수는 선언된 시점에 생성된다. 이후 생성된 변수는 자신이 선언된 열린 중괄호({)  의 쌍인 닫힌 중괄호(})를 만나면 메모리에서 삭제된다.

{
 int a ; // 변수 a의 생성 시점
  {
	a = 3;
  } 
 } // 변수 a의 소멸 시점

 

자료형

JVM은 메모리를 효율적으로 관리하기 위해 메모리를 크게 메서드 영역, 스택 영역, 힙 영역으로 나눠 사용한다.

우리가 옷을 정리할 때 상의, 하의, 속옷등을 다른 서랍에 보관하는 것과 같은 원리다!

특히 메모리의 메서드 영역은 클래스, 정적 ,  상수 영역이라고도 부른다. 메모리 할당 이후 실행 파일인 바이트 코드는 메모리의 메서드영역에 로딩되며, 이후 클래스 내에 포함돼 있는 main()메서드를 실행하는 것이 자바가상머신의 역할이다.즉, main()메서드가 자바
프로그램의 시작 지점이자 끝 지점인 것이다.

 

메소드 영역 

- 프로그램 실행에 대한 코드, static 변수, 런타임 상수풀

- 프로그램 시작 전에 로드되고 프로그램 종료 시 소멸

 

스택 영역 

- 정적으로 할당된 메모리 영역

- Primitive 타입 ( boolean, char, short, int, long, float, double) 

- 메소드가 호출되면 지역변수, 매개변수가 프레임 형태로 생성되어 스택영역으로 쌓였다가 소멸

- 프레임 형태 (프레임 영역을 벗어난 다른 메소드의 변수들은 서로 참조할 수 없음) 

 

힙 영역

- 동적으로 할당된 메모리 영역 

- 클래스의 객체(인스턴스), 배열이 new연산자에 의해 힙 영역에 동적으로 생성

- 생성된 객체는 가비지 컬렉터에 의해 사용이 없음으로 확인되면 자동으로 제거 됨