JAVA

[Java.2-3] 객체 소멸과 가비지

식빵민 2022. 4. 15. 19:50
  • 객체 소멸
    • new에 의해 할당된 객체 메모리를 자바 가상 기계(JVM)의 가용 메모리로 돌려 주는 행위
    • 자바 응용 프로그램은 임의로 객체를 소멸 할 수 없음
      • 객체 소멸은 JVM의 고유한 역할
      • C/C++에서와 다르게 할당받는 객체를 개발자가 직접 되돌려 주지 않아도 됨.
  • 가비지 
    • 가리키는 레퍼런스가 한도 없는 객체
    • 누구도 사용할 수 없게 된 메모리
    • 가비지 컬렉션 : JVM의 가비지 컬렉터가 자동으로 가비지 수집 반환
public class GarbageEx{
	public class void main(String args[]){
    	String a = new String("Good");
        String b = new String("Better");
        String c = new String("Best");
        
        a = null;
        b = c;
    }
}//Good 이 저장된 객체, Better 가 저장된 객체는 가비지가 됨
  • 가비지 컬렉션
    • 자바에서 가비지를 회수하여 자동 회수하는 과정
    • 가비지 컬렉션 스레드의 의해 수행
    • 개발자에 의한 강제 가비지 컬렉션 
      • JVM에 가비지 컬렉션 요청 (JVM이 가비지 컬렉션 시점을 전적으로 판단)
      • System 또는 Runtime 객체의 gc() 메소드 호출
System.gc();
Runtime.gc();