본문 바로가기
프로그래밍 언어/Java

[Java] 객체 소멸

by 까망 하르방 2021. 3. 2.
반응형

객체 소멸

객체 소멸이란 new에 의해 생성된 객체 메모리를 자바 가상 기계어에 돌려주어 가용 메모리에 포함시키는 것

C++에는 new로 할당받은 객체가 더 이상 필요 없을 때 시스템에게 리턴할 수 있도록 delete 연산자 존재.

하지만 Java에서는 객체를 생성하는 new는 있지만 객체를 소멸시키는 기능은 없다.

그렇다면 할당받은 메모리가 더 이상 필요 없을 때 어떻게 리턴할까?

 

더 이상 필요 없는(사용되지 않는) 메모리는 garbage라고 부르며,

자바 가상 기계의 garbage collector에 의해 적절한 시점에 자동으로 수집되어 가용 메모리에 리턴됩니다.

그렇기에 메모리 관리 측면에서 개발자를 어느정도 자유롭게 해줍니다.

 

Garbage 발생시기

객체나 배열을 가리키는 레퍼런스가 하나도 없어지는 시기

public class Person {
    String name;
    
    public Person(String name) {
        this.name = name;
    };
    
    
    public static void main(String[] args) {
        Person p1 = new Person("A");
        Person p2 = new Person("B");
        
        p2 = p1; // name="A" 객체가 garbage로 처리
        
        Person p3 = new Person("C");
        p3 = null; // name="C" 객체가 garbage로 처리
        
    }
}

 

Reference

- Garbage Collection

Java Garbage collection  (NHN Hello world 블로그)

인스턴스를 만드는 것은 내부적으로는 컴퓨터의 메모리를 사용하는 것이다. 

여기서 말하는 메모리는 RAM을 의미한다. 

램은 가장 빠른 저장 장치이기 때문에 컴퓨터 프로그램들은 이 램에 저장된 후에 동작하게 된다. 

 

 

반응형

댓글