1. 실행 모듈
- 자바의 실행은 main 메소드에서 시작되며, 단 하나의 main 메소드를 가져야 하지만, 다수의 클래스 파일이 각각 main 메소드를 가질 수 있음
2. 캡슐화
- 변수나 메소드는 반드시 클래스 내에 구현되어야 함
- 클래스에 속하지 않는 변수, 메소드는 존재 할 수 없음
- 클래스 내에 또 다른 클래스를 만들 수 있음
3. 패키지
- 서로 관련이 있는 클래스를 패키지로 묶어 관리할 수 있음
4. Garbage Collector
- 사용하지 않는 객체는 자동적으로 자원을 반납
- 프로그램이 동적으로 할당한 메모리 영역 중에 필요 없게 된 자원을 반납하는 기능인 Reference Counting 기법 사용
Reference Counting(참조 횟수 계산 방식)
메모리 제어 방법 중 하나.
어떤 객체가 참조 값을 가지고, 이 객체가 참조되면 참조 값을 늘리고, 참조 후에 더이상 사용하지 않으면 참조 값을 줄인다.
참조 값이 0이 되면 더이상 유효하지 않은 객체로 보아 메모리에서 제거.
- 유효하지 않은 포인터 접근 제한 가능
* 이미 해제된 메모리에 접근할 때 이 포인터가 해제되고 새로운 값이 할당되어있다면 잘못된 값을 읽어오게 됨
- 이중 해제 방지
- 메모리 누수 방지
* 접근 가능한 메모리가 증가해 메모리가 고갈되는 문제는 GC로도 막을 수 없음
- 어떤 메모리를 해제하는지 판단하는데 비용이 듦
* 객체가 필요 없어지는 시점을 개발자가 알고 있어도, GC 알고리즘이 그 시점을 추적해야 하므로 오버헤드 발생
- GC가 실행되는 시점 예측이 어려움
* 예측 불가능하게 일시 정지가 될 수 있어, 실시간 시스템에는 적합하지 않음
- 할당된 메모리가 해제된 지점 파악을 할 수 없음
5. 오픈소스 라이브러리가 풍부함
6. 동적 로딩
- 미리 객체를 생성하는 것이 아니라, 필요한 시점에 생성 가능
- 컴파일 시에 미리 생성되지 않기 때문에, CPU의 메모리 사용량을 줄일 수 있음
7. 하나의 소스 파일에 여러 개의 클래스를 작성한 경우, 컴파일 할 때 클래스마다 별도의 클래스 파일이 생성
- 오직 한 클래스만 public으로 선언이 되어있어야 하며, 그 클래스 파일명과 소스 파일이 일치해야함
접근지정자의 호출 범위
* private : 클래스 내에서만 가능
* default : 클래스 내, 동일 패키지
* protected : 클래스 내, 동일 패키지, 하위 클래스
* public : 모든 곳
'개발 > 자바' 카테고리의 다른 글
기본 타입 (0) | 2022.09.07 |
---|---|
자바의 상수 (0) | 2022.09.05 |
자바 프로그램 1(기본 구조, 변수) (0) | 2022.09.04 |
자바 실행순서 및 프로그램 (0) | 2022.09.04 |
자바의 장점과 단점 (0) | 2022.09.01 |
댓글