반응형

※ 가비지(garbage)

 : 가비지란 더 이상 사용하지 않는 객체나 배열 메모리를 뜻하며, 여기서 더 이상 사용하지 않는다는 것은 해당 객체나 배열을 가리키는 레퍼런스가 존재하지 않는다는 것을 의미한다.

1
2
3
4
Person a, b;
= new Person("철수");
= new Person("영희");
b=a; // b가 가리키던 영희에 해당하는 객체는 가비지가 된다.
cs


※ 가비지 컬렉션(garbage collection)

 : 가비지가 많아지면 자바 가상 머신(JVM)에서 응용프로그램에게 할당해줄 수 있는 가용 메모리의 양이 줄어들게 되고, 가용 메모리 양이 0이 될 경우 자바 응용프로그램은 더 이상 실행할 수 없게 된다.

 이런 경우를 대비하여 JVM에서 가용 공간이 일정 크기 이하로 줄어들게 되면 자동으로 가비지를 회수하여 가용 메모리 공간을 늘리는데 이것을 바로 가비지 컬렉션(garbage collection)이라고 한다.


 - 가비지 컬렉터(garbage collector) : 가비지 컬렉션을 수행하는 주체

 - 가비지 컬렉션 스레드(garbage collection thread) : 가비지 컬렉터 역할을 수행하는 JVM의 스레드


 : 자바 가상 머신의 내부 알고리즘의 판단에 의해 가비지 컬렉션이 수행되므로 언제 컬렉션이 일어나는지는 판단하기 어렵다.

 : 규모가 큰 프로그램의 경우 가비지가 많이 생산될 확률이 높은데 이 때에는 가비지 컬렉터가 실행되어 자바 프로그램의 실행을 멈추고 가비지 컬렉션이 끝날 때를 기다리게 된다. 이 것을 사용자에게는 프로그램이 중단된 것으로 보이기 때문에, 자바는 실시간 처리 응용에는 부적합한 것으로 알려져 있다.


※ 가비지 컬렉션 강제 수행

 : 응용프로그램에서 System 또는 Runtime 객체의 gc() 메소드를 호출하여 강제로 가비지 컬렉션을 수행할 수 있다.

1
System.gc();
cs


: 위의 문장을 작성한다고 바로 가비지 컬렉션이 수행되는 것은 아니다. 위의 문장은 JVM에게 가비지 컬렉션이 필요한 상황이라고 강력히 주장하는 것이므로 실제로 수행되는 것은 JVM이 전적으로 판단하여 적절한 시점에 수행된다.

반응형

'Develope > Java' 카테고리의 다른 글

static 멤버  (0) 2020.05.11
접근 지정자  (0) 2020.05.10
생성자(constructor)  (0) 2020.05.09
메소드 오버로딩과 this  (0) 2020.05.06
JAVA 5일차  (0) 2020.04.12
블로그 이미지

rootable

,