자바

자바의 생성자와 가비지컬렉션에 대해 알아보기

cvgsdvgs 2016. 1. 13. 17:59

생성자

생성자란 클래스의 객체를 생성할 때 객체의 인스턴스변수의 초기값을 지정해 주는 역할을 한다. 초기값으로 디폴트값을 지정할 수도 있고 생성자를 오버로딩하여 전달인자에 따라 인스턴스 변수를 부분적 혹은 모두 초기화 하는 것이 가능하다. 생성자는 메소드지만 리턴형을 지정하지 않아도 되며 생성자는 상속되지 않는다. 상속을 하는 경우 부모클래스와 자식 클래스가 모두 생성자가 있으므로 자식 클래스의 객체를 생성할 때 스택에는 순차적으로 자식클래스의 생성자 > 부모클래스의 생성자가 쌓이게 된다. 스택은 후입선출이므로 부모클래스의 생성자가 먼저 실행되는데 이는 부모가 존재해야 자식이 존재할 수 있는 간단한 이치로 설명된다. 최상위 클래스의 생성자에는 super( ); 메서드가 반드시 포함되어야 컴파일이 가능하다. (이런 스택에 순차적을 쌓이는 형태는 메서드 역시 마찬가지다. 만약 a메소드에서 b메소드를 호출하면 스택에는 b메소드가 나중에 쌓이게 된다.)




가비지 컬렉션

이렇게 생성된 객체들은 이 객체들을 참조하는 이름들이 더이상 존재하지 않는다면 메모리에서 사라지게 되는데 이를 가비지 컬렉션이라고 한다. 일반적으로 객체명이 만들어지고 그 후 그 객체명이 참조할 메모리 공간이 할당된다. 만약 프로그램 내에서 그 메모리 공간을 사용할 수 있도록 하는 참조(객체명 등)이 없다면 그 메모리 공간을 사용할 수 없게 되고 그 메모리 공간은 가비지컬렉션에 의해 누구나 사용이 가능하도록 속박에서 벗어나게 된다. 이를 비유하자면 판타지소설에서 마치 어떤 사람의 이름을 아는 사람이 더 이상 없다면 그 사람이 투명인간이 되거나 이 세상에 더 이상 존재하지 않게 되는 것과 같다.