마지막은, 마지막으로, 차이점은 무엇입니까 마무리에 대한 자바의 핵심 이야기?

문제

이야기의 마지막, 마지막으로, 차이점은 무엇입니까 마무리?

결심

이 세 가지 간단한 용어가 카스 퍼 스키와 파키스탄, 치바 관계이다. . .

최종 수정 요소 방법을 무시할 수없는 클래스가 상속되지 불변 변수는 변경 될 수 없다.

마지막으로 온 / 오프 스레드, 코드 블록 내에서 실행되어야하며, 일반적으로 JDBC 연결을 폐쇄, 잠금 잠금 해제를 제외하고 비정상적인 캡처를 보장합니다.

개체 마무리는 대상 개체가 특수 재활용 개체로 표시됩니다, 클래스 방법이다. 의 JDK에서 사용되지 않는 불확실성의 (확실하지 않은 경우 GC를 수행)와 GC는 효율을 감소하기 때문에 (같은 특수 개체는 복구 프로세스 GC를 방해합니다 표시) 표시되었습니다.

전파

최종 불변 차이 및

 final List<String> strList = new ArrayList<>();
 strList.add("Hello");
 strList.add("world");  
 List<String> unmodifiableStrList = List.of("hello", "world");
 unmodifiableStrList.add("again");
复制代码

strList이 마지막이지만 마지막이 기준이 변경되지 않도록 있기 때문에, 내부 요소의 내용을 변경할 수 있지만, 참조 요소를 변경할 수 있습니다 호출이 추가 할 수 있도록 unmodifiableStrList이 불변뿐만 아니라, 참조를 변경할 수 없습니다 만든 없으며, 당신은 그 요소의 내용을 변경할 수 있습니다 방법은 예외가 발생합니다.

불변의

단점은 통화가 복사 방법은 메모리와 GC의 부담을 증가 얻을 수 있다는 것입니다, 한 번 생성 불변는 여러 스레드에서 사용할 수있는 synchroinzed하지 않는 보안 실을 수 있도록 효율성을 높이기 위해 변경할 수 없습니다.

어떻게 불변의 객체를 만드는 방법?

  1. 이 클래스는 최종 한계 확장을 선언했다.
  2. 최종 및 개인 선언 된 모든 멤버 변수, setter 메소드를 인식하지 않습니다.
  3. 개체가 입력이 변경되지 않은 것으로 판정 할 수 없기 때문에, 물체의 전체 복사본을 구성.
  4. 게터 방법은 쓰기에 복사본을 사용합니다.

깊고 얕은 복사 사본

기본 데이터 타입은 객체의 할당에 의해 할당 된 값이 기준 어드레스이다. 얕은 복사 전용 복사본 딥 카피의 층이 모든 참조를 복사합니다.

쓰기 복사

다음 추가 소스 데이터 B의 카피, 및 B. B 포인터 변형 소스 데이터에 수정

마무리 및 클리너

마무리는, 그것이 감소 된 효율의 결과, GC 처리를 방해 할 GC 전에 호출되도록 설계된다.

System.runFinalization ()는 확신 할 수없는 경우 GC의 구현입니다.

자원 즉, 명시 적으로 릴리스 지출, 또는 리소스 풀을 다시 시도 할 수 있습니다.

java.lang.ref.Finalizer 예외를 삼킬 것이다.

 private void runFinalizer(JavaLangAccess jla) {
 //  ... 省略部分代码
 try {
    Object finalizee = this.get(); 
    if (finalizee != null && !(finalizee instanceof java.lang.Enum)) {
       jla.invokeFinalize(finalizee);
       // Clear stack slot containing this variable, to decrease
       // the chances of false retention with a conservative GC
       finalizee = null;
    }
  } catch (Throwable x) { }
    super.clear(); 
 }
复制代码

클리너는 사후 정리 메커니즘은보다 안정적이고 가볍고 사용, 팬텀 따옴표 (PhantomReference)를 사용하여 구현됩니다. 그것은 자신의 실행중인 스레드가 있으므로 교착 상태와 같은 예기치 못한 문제가 발생하지 않도록. (다음 문제는 여러 참조를 설명)


모든 성장은 당신과 함께 공유하고자합니다.

추천

출처juejin.im/post/5dbf8d5e6fb9a020294b62a1