공부/JAVA

[JAVA] 변수와 메모리

JangGiraffe 2016. 3. 23. 12:36

>>전역변수

클래스의 멤버변수

클래스의 객체를 생성할 때 메모리에 생성

HEAP 메모리에 생성

변수의 초기화 지원(초기화 할 필요 없음)

GC에 의해 메모리 소멸


>>지역변수

메서드 수행시 메모리에 생성

STACK메모리에 생성

초기화가 안되므로 초기화 후 사용 가능

메소드 종료시 메모리에서 소멸


----------------------------------------------------------------------------

>>메모리 영역의 종류 - 상수영역

프로그램의 소스코드에 사용된 상수를 저장하는 메모리 공간. (new 키워드로 만들어진건 이 공간에 저장되지 않음.)

문자열 변수의 경우 상수영역을 사용해 값을 참조


>>메모리 영역의 종류 - STATIC 영억

static 메소드, 변수를 저장하는 메모리 영역

프로그램 시작시 메모리에 적재

JAVA JVM은 프로그램 구동시 static 영역의 main 메소드를 호출해 프로그램을 시작함.


>>메모리 영역의 종류 - STACK

프로그램 구동 중 정적 변수(메모리 크기가 고정되는 변수)들이 저장되는 메모리 공간

지역변수가 저장되는 공간

초기화를 지원하지 않음

메소드 종료시 메모리에서 자동 해제

스택의 맨밑바닥에 메인이 깔려있대


>>메모리 영역의 종류 - HEAP

동적메모리를 생성하는 메모리공간으로 프로그램 구동 중 생성되는 메모리를 관리한다.

new 연산자를 사용해서 생성.

동적 메모리를 저장(문자열, 배열, 클래스의 객체)

초기화 지원

GC에의해 해당 변수의 참조가 더이상 없는 경우 자동 해제 지원(단, 시기는 ..???)


레퍼런스 변수

기본형의 값이 아닌 특정 메모리의 위치 값을 가지는 변수

new 연산자를 이용해 메모리의 위치값을 대입

HEAP메모리를 참조하는 변수

배열 변수,클래스 타입의 변수(String)



반응형