JavaTM Platform
Standard Ed. 6

java.lang.ref
클래스 SoftReference<T>

java.lang.Object 
  상위를 확장 java.lang.ref.Reference <T>
      상위를 확장 java.lang.ref.SoftReference<T>


public class SoftReference<T>
extends Reference <T>

메모리 요구에 응해 가비지 컬렉터의 판단으로 클리어 되는 소프트 참조 객체입니다. 소프트 참조는 일반적으로, 메모리 센시티브인 캐쉬를 구현하기 위해서 사용됩니다.

어떤 시점으로, 객체가「소프트 도달 가능」이라고, 가비지 컬렉터가 판단했다고 합니다. 그 시점에서, 가비지 컬렉터는, 그 객체에의 소프트 참조 모두와 강참조의 체인을 경유해 그 객체에 도달할 수 있는 것 같은, 소프트 도달 가능한 다른 객체에의 소프트 참조 모든 것을 원자적으로 클리어 하는 것을 선택할 수 있습니다. 동시에 또는 나중에, 가비지 컬렉터는, 참조 큐에 등록되어 있는 그러한 새롭고 클리어 된 소프트 참조를 큐에 넣습니다.

소프트 도달 가능한 객체에의 모든 소프트 참조는, 가상 머신이 OutOfMemoryError 를 throw 하기 전에 클리어 되고 있는 것이 보증되고 있습니다. 그렇지 않은 경우, 소프트 참조가 클리어 되는 시점, 또는 다양한 객체에의 일련의 소프트 참조가 클리어 되는 순서에 제약은 없습니다. 다만, 가상 머신의 구현은, 최근 작성된 소프트 참조 또는 최근 사용된 소프트 참조를 클리어 하지 않는 것이 장려됩니다.

이 클래스의 직접적인 인스턴스는, 단순한 캐쉬를 구현하기 위해서 사용할 수 있습니다. 이 클래스 또는 파생한 서브 클래스는, 보다 세련된 캐쉬를 구현하기 위해서, 좀 더 큰 데이터 구조에서도 사용할 수 있습니다. 소프트 참조의 리파렌트가 강도달 가능한가 의리, 즉 실제로 사용되고 있는 한, 소프트 참조는 클리어 되지 않습니다. 이 때문에, 예를 들어 세련된 캐쉬는, 엔트리에의 강한 리파렌트를 유지하는 것으로, 가장 새롭게 사용된 엔트리가 파기되는 것을 막아, 다른 엔트리는 가비지 컬렉터의 판단으로 파기되도록 할 수 있습니다.

도입된 버젼:
1.2

생성자 의 개요
SoftReference (T  referent)
          지정된 객체를 참조하는 새로운 소프트 참조를 작성합니다.
SoftReference (T  referent, ReferenceQueue <? super T > q)
          지정된 객체를 참조해, 지정된 큐에 등록되어 있는 새로운 소프트 참조를 작성합니다.
 
메소드의 개요
 T get ()
          참조 객체의 리파렌트를 돌려줍니다.
 
클래스 java.lang.ref. Reference 로부터 상속된 메소드
clear , enqueue , isEnqueued
 
클래스 java.lang. Object 로부터 상속된 메소드
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

생성자 의 상세

SoftReference

public SoftReference(T  referent)
지정된 객체를 참조하는 새로운 소프트 참조를 작성합니다. 새로운 참조는, 어느 큐에도 등록되지 않습니다.

파라미터:
referent - 새로운 소프트 참조가 참조하는 객체

SoftReference

public SoftReference(T  referent,
                     ReferenceQueue <?  super T > q)
지정된 객체를 참조해, 지정된 큐에 등록되어 있는 새로운 소프트 참조를 작성합니다.

파라미터:
referent - 새로운 소프트 참조가 참조하는 객체
q - 참조가 등록되는 큐. 등록이 필요없는 경우는 null
메소드의 상세

get

public T  get()
참조 객체의 리파렌트를 돌려줍니다. 프로그램 또는 가비지 컬렉터에 의해, 이 참조 객체가 벌써 클리어 되고 있는 경우, 이 메소드는 null 를 돌려줍니다.

오버라이드(override):
클래스 Reference <T > 내의 get
반환값:
이 참조가 나타내는 객체. 이 참조 객체가 클리어 되고 있는 경우는 null

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.