객체 소멸
- new에 의해 할당된 객체 메모리를 자바 가상 기계의 가용 메모리로 되돌려 주는 행위
- 자바 응용프로그램에서 임의로 객체를 소멸시킬 수 없음
가비지(garbage)
- 자바 응용프로그램에서 더 이상 사용되지 않게 된 객체나 배열 메모리
- 가리키는 레퍼런스가 하나도 없는 객체나 배열
- 응용프로그램이 더 이상 접근할 수 없음
a = new Person("이몽룡");
b = new Person("성춘향");
//2개의 Person 객체 생성
b = a;
//레퍼런스 b는 a가 가리키던 객체를 가리킴
//b가 가리키던 처음 객체는 아무도 참조하지 않게 됨(접근 불가) -> 가비지
가비지 컬렉션
- 자바에서 가비지를 자동 회수하여 가용 메모리로 반환하는 과정
- 가비지가 차지하고 있는 메모리 공간은 회수되는 것이 경제적
- 가비지 컬렉션 스레드에 의해 수행
- System 또는 Runtime 객체의 gc() 메소드를 호출하여 개발자가 강제 가비지 컬렉션 가능
System.gc();
- 호출 즉시 가비지 컬렉터가 작동하는 것은 아님
- 자바 플랫폼이 판단하여 적절한 시점에 작동
예제 4-9 다음 코드에서 언제 가비지가 발생하는지 설명
public class GarbageEx {
public static void main(String[] args) {
String a=new String("Good");
String b=new String("Bad");
String c=new String("Normal");
String d, e;
a=null;
d=c;
c=null;
}
}
더보기


(1) a=null; 실행 시 a가 가리키던 객체("Good")는 가비지가 됨
(2) c=null; 이 실행되었지만 그 전에 c가 가리키던 "Normal"을 d가 가리키게 하였으므로 가비지 x
'java > 개념' 카테고리의 다른 글
static (0) | 2024.05.20 |
---|---|
접근 지정자 (0) | 2024.05.20 |
메소드 활용 - 메소드 오버로딩 (0) | 2024.05.20 |
메소드 활용 - 인자 전달 (0) | 2024.05.20 |
객체 배열 (0) | 2024.05.20 |