[Java] 생성자, 가비지
▶ 생성자의 개념
- 객체가 생성될 때 초기화를 위해 실행되는 메소드 (초기값 설정)
▷ 생정자의 특징
- 생성자는 메소드
- 생성자 이름은 클래스 이름과 동일해야함
- 생성자는 new를 통해 객체를 생성할 때만 호출됨
- 생성자도 오버로딩하여 여러개 작성 가능
- 생성자는 리턴 타입을 지정할 수 없음
- 생성자는 하나 이상 선언되어야 함 (개발자가 생성자를 작성하지 않았으면 컴파일러에 의해 자동으로 기본 생성자가 선언됨, 기본 생성자를 디폴트 생성자라고도함)
▷ 생성자 정의와 호출
예제 1) 생성자 정의와 호출
예제 2) 생성자 선언 및 활용 연습
▶ 기본 생성자 (default constructor)
- 클래스에 생성자가 하나도 선언되지 않은 경우
- 컴파일러에 의해 자동으로 생성 (매개변수 없는 생성자, 아무작업 없이 단순 리턴)
- 디폴트 생성자라고도 부름
▷ 기본 생성자가 자동 생성되지 않는 경우
- 클래스에 생성자가 하나라도 존재하면 기본 생성자가 자동 삽입되지 않음
▷ this(), 생정자에서 다른 생성자 호출
- 같은 클래스의 다른 생성자 호출
- 생성자 내에서만 사용 가능(다른 메소드에서는 사용 불가)
- 반드시 생성자 코드의 제일 처음에 수행
▷ this() 사용 실폐 사례
▶ 객체의 소멸
- new에 의해 생성된 객체 메모리를 자바 가상 기계로 되돌려 주는 행위
- 소멸된 객체 공간은 가용 메모리에 포함
● 자바 응용프로그램에서 임의로 객체 소멸할 수 없음
- 객체 소멸은 자바 가상 기계의 고유한 역할
- 자바 개발자에게는 다행스러운 기능
(C/C++ 에서는 할당 받은 객체를 개발자가 프로그램 내에서 삭제해야함 → C/C++의 프로그램 작성을 어렵게 만드는 요인)
▶ 가비지 (garbage)
- 가리키는 레퍼런스가 하나도 없는 객체
- 더 이상 접근하여 사용할 수 없게 되었음
▷ 가비지 사례
예제) 가비지 발생
▶ 가비지 컬렉션
- 자바 가상 기계의 가비지 컬렉터 스레드가, 자동으로 가비지를 수입하여 가용 메모리로 반환하는 과정
- 자바에서는 가비지를 자동 회수(가용 메모리 공간으로 확보하기 위해)
- 가바지 컬렉터 스레드(garbage collector thread)에 의해 자동 수행
● 개발자에 의해 강제 가비지 컬렉션
- System 또는 Runtime 객체의 gc() 메소드 호출
- 이 코드는 자바 가상 기계에 강력한 가비지 컬렉션 요청(그러나 자바 가상 기계가 컬렉션 시점을 전적으로 판단)