|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 패키지 다음의 패키지 | 프레임 있어 프레임 없음 |
참조처:
설명
클래스의 개요 | |
---|---|
PhantomReference<T> | 팬텀 참조 객체입니다. |
Reference<T> | 참조 객체 유익의 추상 base class입니다. |
ReferenceQueue<T> | 참조 큐입니다. |
SoftReference<T> | 메모리 요구에 응해 가비지 컬렉터의 판단으로 클리어 되는 소프트 참조 객체입니다. |
WeakReference<T> | 약참조 객체입니다. |
가비지 컬렉터와의 제한부의 대화를 지원하는, 참조 객체 클래스를 제공합니다. 다른 있는 객체가 가비지 컬렉터에 의해 벌써 재생되고 있어도, 그 객체를 가리키는 참조를 유지하고 싶은 경우에, 프로그램은 참조 객체를 사용할 수 있습니다. 게다가 프로그램은, 어느 객체에의 도달 가능성이 바뀌었다고 가비지 컬렉터가 판단한 후에, 통지를 받도록(듯이) 할 수가 있습니다.
각 형의 참조 객체는, 추상 기저
클래스의 서브 클래스에 의해 구현됩니다. 그러한 서브 클래스의 인스턴스는, 「리파렌트」라고 불리는, 특정의 객체에의 참조를 캡슐화합니다. 각 참조 객체는, 참조를 취득 및 클리어하기 위한 메소드를 제공합니다. 클리어 처리는 제공됩니다만, 참조 객체는 불변이기 (위해)때문에,Reference
set
오퍼레이션은 제공되지 않습니다. 프로그램은, 이러한 서브 클래스를 한층 더 서브 클래스화해 목적에 있던 필드 및 메소드를 추가하는 일도, 이러한 서브 클래스를 변경하지 않고 그대로 사용할 수도 있습니다.
ReferenceQueue
클래스에 의해 구현됩니다.
등록된 참조 객체와 그 큐의 관계는 한방향입니다. 즉, 큐는 등록되어 있는 참조의 이력을 기록하지 않습니다. 등록되어 있는 참조 자체가 도달 불가능하게 되면(자), 그것은 절대로 큐에 넣어지지 않습니다. 참조 객체를 사용해 프로그램이 리파렌트를 필요로 하는 한 객체를 도달 가능하게 해 두는 것은 프로그램의 책임입니다.
프로그램에 따라서는, 어느 thread를, 1 개(살) 이상의 큐로부터의 참조 객체의 삭제 및 그러한 처리 전용으로 하도록(듯이) 선택됩니다만, 이것은, 전혀 필요 없습니다. 많은 경우에 잘 기능하는 방법은, 꽤 빈번하게 행해지는 것 외의 액션을 실행하는 동안에 참조 큐를 검사하는 것입니다. 예를 들어, 약키를 구현하기 위해서 약참조를 사용하는 해시 테이블의 경우는, 테이블이 액세스 될 때마다 자신의 참조 큐에 대해서 폴링 합니다.
클래스는 이 방법으로 기능합니다. WeakHashMap
메소드는 단지 내부 데이터 구조를 체크할 뿐(만큼)이므로, 이 체크가 해시 테이블 액세스 메소드에게 주는 오버헤드는 매우 정확히 알 수 없는 것입니다.
ReferenceQueue.poll
|
JavaTM Platform Standard Ed. 6 |
|||||||||
전의 패키지 다음의 패키지 | 프레임 있어 프레임 없음 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.