자바 의 몇 가지 인용 유형
9898 단어 자바 기반
자바 에는 네 가지 유형의 인용 이 존재 합 니 다.강 한 인용,부 드 러 운 인용,약 한 인용 과 허 인용 입 니 다.
이 네 가지 인용 유형 은 우리 로 하여 금 대상 의 생명 주 기 를 결정 하고 JVM 의 GC 회수 에 유리 하 며 메모리 유출 과 메모리 유출 에 더욱 좋 은 해결 경 로 를 가 질 수 있다.
자바 의 몇 가지 인용 유형 과 접근 성
참조 형식
접근 성
존재 방식
GC 회수 방식
강하 게 도달 할 수 있다
억지로 인용 하 다
하나의 스 레 드 에서 인용 없 이 직접 도달 할 수 있 습 니 다.
인용 이 존재 하 는 경우 회수 되 지 않 습 니 다.
부 드 럽 게 접근 할 수 있다
소프트 인용
SoftReference
대상 통과 가능메모리 부족 시 사용 빈도 에 따라 제거
약 하 다
약 인용
WeakReference
대상 통과 가능GC 호출 시 반드시 회수
허 다 하 다
거짓 인용
PhantomReference
대상 통과 가능생명주기 에 영향 을 주지 않다
도달 할 수 없다
존재 하지 않 음
어떠한 방법 도 도달 할 수 없다
호출 즉시 제거
강 인용(강 참조)
String str = new String("This is a Strong Reference");//
str = null;
System.gc(); // gc
일반적으로 우 리 는 gc 를 수 동 으로 호출 하여 회수 할 필요 가 없 으 며,시스템 은 자동 으로 진행 되 며,여 기 는 단지 시범 일 뿐이다.또 주의해 야 할 것 은
System.gc()
은 gc 에 게 만 회수 하 라 고 통지 할 뿐 즉시 실행 되 는 것 이 아니다.소프트 참조(소프트 참조)
java.lang.ref.SoftReference
류 로 1)
SoftReference<String> sr = new SoftReference<String> (new String("Soft Reference"));
System.gc();
System.out.println(sr.get());
2)
ReferenceQueue<String> Queue = new ReferenceQueue<String>();
SoftReference<String> sr = new SoftReference<String> (new String("Soft Reference"),Queue);
System.gc();
System.out.println(sr.get());
인용 대기 열 을 추가 할 수 있 습 니 다.이렇게 하면 부 드 러 운 인용 대상 인 스 턴 스 가 JVM 에 회수 되면 이 부 드 러 운 인용 은 연 결 된 인용 대기 열 에 추 가 됩 니 다.
약 인용(WeakReference)
java.lang.ref.WeakReference
류 로 WeakReference<String> wr = new WeakReference<String>(new String("Weak Reference"));
System.gc();
System.out.println(wr.get());
가상 인용(PhantomReference)
유일한 목적 은 이 대상 이 회수 되 었 을 때 시스템 알림 을 받 을 수 있 는 것 입 니 다.가상 인용 은 주로 대상 이 메모리 에서 삭제 되 었 는 지 확인 하 는 데 사 용 됩 니 다.
String str = new String("This is a Phantom Reference")
ReferenceQueue<String> Queue = new ReferenceQueue<String>();
PhantomReference<String> pr = new PhantomReference<String>(str,Queue);
str = null;
System.gc();
System.out.println(pr.isEnqueued());//
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.