Java/Java 기본

객체의 소멸

검정비니 2018. 6. 25. 14:09
728x90
반응형

객체의 소멸



자바에서는 객체를 생성하는 new 키워드와 생성자는 있지만 객체를 소멸시키는 기능은 없다. 또한 자바에서는 객체가 생성될 때 호출되는 생성자는 정의할 수 있지만, 소멸할 때 호출되는 소멸자 메소드는 정의할 수 없다.


객체 소멸이란 new에 의해 생성된 객체 메모리를 자바 가상 기계에게 돌려주어 가용 메모리(available memory)에 포함시키는 것이다. C++에는 new로 할당받은 객체가 더 이상 필요 없을 때 시스템에게 리턴할 수 있도록 delete 연산자를 두고 있으며, delete 연산자가 실행되어 객체가 소멸되면 소멸자가 호출된다. 소멸자의 역할은 객체가 사라지는 시점에서 필요한 마무리 작업을 수행하는 것이다. 예를 들어, 어떤 객체가 파일을 열어놓고 있다가 소멸되면 소멸자에서 그 파일을 닫는다. 혹은 객체가 음악을 연자하고 있다면 소멸 시에 연주를 멈추게 할 수 있다.


그러나, 자바에서는 delete 연산자 등과 같이 객체나 배열을 시스템에 리턴하는 연산자나 키워드가 전혀 없다. 그렇기 때문에 자바에는 소멸자가 있을 수가 없다. 이것은 어떻게 보면 개발자에게 다행일 수도 있는 일이다. 개발자가 할당한 메모리를 리턴하거나 직접 해제하는 작업에 시간과 노력을 들일 부담을 줄일 수 있기 때문이다.


그렇다면 자바에서 메모리를 할당받은 후 사용하지 않게 된 객체 메모리는 어떻게 되는가? 이들은 가비지(garbage)가 되며 자바 가상 기계의 가비지 컬렉터(garbage collector)에 의해 적절한 시점에 자동으로 수집되어 가용 메모리에 리턴된다.

반응형

'Java > Java 기본' 카테고리의 다른 글

접근 지정자  (0) 2018.06.28
가비지와 가비지 컬렉션  (0) 2018.06.26
this(), 다른 생성자 호출  (0) 2018.06.25
생성자  (0) 2018.06.24
this 키워드  (0) 2018.06.23