JAVA 12. Garbage Collection and Access Modifier
Chapter | 1 | ~ | 4 | ||
---|---|---|---|---|---|
Ch 1 | 01 | ||||
Ch 2 | 02 | 03 | 04 | 05 | |
Ch 3 | 06 | 07 | 08 | ||
Ch 4 | 09 | 10 | 11 | 12 | 13 |
Next Section |
---|
Garbage Collection and Access Modifier
Object Extinction
- 객체 소멸
- new에 의해 할당 받은 객체와 배열 메모리를 자바 가상 기계(JVM)로 되돌려주는 행위
- 소멸된 공간은 가용 메모리가 됨
- 자바는 사용자 임의로 객체 소멸 불가
- 따로 객체 소멸 연산자가 없음
- 객체 소멸은 JVM 고유의 역할
Garbage Collection
-
가비지 : 가리키는 레퍼런스가 하나도 없는 객체
University a, b; a = new University("고려대학교"); b = new University("연세대학교"); b = a; //b가 가리키던 객체는 가비지가 됨
연습문제 1 : 다음 코드에서 언제 가비지가 발생하는지 설명하시오.
정답
- 가비지 컬렉션
- JVM이 가비지 자동 회수
- 가용 메모리 공간이 일정 이하로 부족해질 때
- 가비지를 수거하여 가용 메모리 공간으로 확보
-
가비지 컬렉터에 의해 자동 수행
- 강제 가비지 컬렉션 수행
System.gc(); //제발 쓰지 말자
- JVM이 가비지 자동 회수
Package
- 패키지
- 상호 관련 있는 클래스 파일(.class)을 저장하여 관리하는 디렉토리
- 자바 프로그램은 하나 이상의 패키지로 구성
Access Modifier
- 접근 지정자
- private, protected, public, default(생략 가능)
- 접근 지정자의 목적
- 클래스나 일부 멤버를 공개하여 다른 클래스에서 접근하도록 허용
- 객체 지향 언어의 캡슐화의 목적이 멤버를 보호하는 것
- 클래스 접근 지정
- 다른 클래스에서 사용하도록 허용할지 지정
- public 클래스 : 다른 모든 클래스에게 접근 허용
- default 클래스 : 같은 패키지의 클래스에만 접근 허용
public class World { ... } // public class class Local { ... } // default class
- 멤버 접근 지정
- public 멤버 : 패키지에 관계 없이 모든 클래스에게 접근 허용
- private 멤버 : 동일 클래스 내에만 접근 허용. 상속 받은 서브 클래스에서 접근 불가
- protected 멤버 : 동일 패키지 내의 다른 모든 클래스에게 접근 허용. 상속 받은 서브 클래스는 다른 패키지에 있어도 접근 가능
- default 멤버 : 같은 패키지 내의 다른 클래스에게 접근 허용
멤버에 접근하는 클래스 | private | default | protected | public |
---|---|---|---|---|
같은 패키지의 클래스 | X | O | O | O |
다른 패키지의 클래스 | X | X | X | O |
접근 가능 영역 | 클래스 내 | 동일 패키지 내 | 동일 패키지와 자식 클래스 | 모든 클래스 |
private member
default member
protected member
public member
연습문제 2 : 다음 코드에서 에러가 발생하는 이유를 설명하시오.
정답
field4는 SampleClass의 private 멤버이므로 SampleClass 외에 다른 클래스에서 접근할 수 없다.Thanks for watching my post!
Comments