Language

SoftReference クラス

定義

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

[Android.Runtime.Register("java/lang/ref/SoftReference", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "T" })]
public class SoftReference : Java.Lang.Ref.Reference
[<Android.Runtime.Register("java/lang/ref/SoftReference", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "T" })>]
type SoftReference = class
    inherit Reference
継承
属性

注釈

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

ガベージ コレクターが特定の時点で、オブジェクトにソフト到達可能であると判断したとします。 その時点で、そのオブジェクトへのすべてのソフト参照と、そのオブジェクトが厳密な参照のチェーンを介して到達可能な他のソフト到達可能なオブジェクトへのすべてのソフト参照をアトミックにクリアすることを選択できます。 同時または後で、参照キューに登録されている新しくクリアされたソフト参照がエンキューされます。

ソフト到達可能なオブジェクトへのソフト参照はすべて、仮想マシンが OutOfMemoryErrorをスローする前にクリアされていることが保証されます。 それ以外の場合、ソフト参照がクリアされるタイミングや、異なるオブジェクトへのそのような参照のセットがクリアされる順序に制約は適用されません。 ただし、仮想マシンの実装は、最近作成または最近使用されたソフト参照のクリアに偏りを持たないことをお勧めします。

<h3>Avoid Soft References for Caching</h3> 実際には、キャッシュのソフト参照は非効率的です。 ランタイムには、どの参照をクリアし、どの参照を保持するかに関する十分な情報がありません。 最も致命的なのは、ソフト参照をクリアしてヒープを大きくするかの選択を考えると、何をすべきかわかりません。

各参照のアプリケーションに値に関する情報が不足しているため、ソフト参照の有用性が制限されます。 あまりにも早くクリアされた参照は、不要な作業を引き起こします。メモリを無駄にしすぎているものを削除します。

ほとんどのアプリケーションでは、ソフト参照ではなく android.util.LruCache を使用する必要があります。 LruCache には効果的な削除ポリシーがあり、割り当てられているメモリの量をユーザーが調整できます。

1.2 で追加されました。

Javaドキュメント。

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

名前 説明
SoftReference(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

SoftReference(Object, ReferenceQueue)

指定されたオブジェクトを参照し、指定されたキューに登録される新しいソフト参照を作成します。

SoftReference(Object)

指定されたオブジェクトを参照する新しいソフト参照を作成します。

プロパティ

名前 説明
Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
IsEnqueued

この参照オブジェクトが関連付けられたキュー内にあるかどうかをテストします (存在する場合)。

(継承元 Reference)
JniIdentityHashCode

相互運用ランタイムによってこのJava ピアに割り当てられた ID ハッシュ コードを取得します。

(継承元 Object)
JniManagedPeerState

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
JniPeerMembers

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

PeerReference

このJava ピアの JNI オブジェクト参照を取得します。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

名前 説明
Clear()

この参照オブジェクトをクリアします。

(継承元 Reference)
Clone()

このオブジェクトのコピーを作成して返します。

(継承元 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
Dispose()

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
Dispose(Boolean)

このJava ピアによって保持されているリソースを解放します。

(継承元 Object)
DisposeUnlessReferenced()

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
Enqueue()

この参照オブジェクトが登録されているキュー (存在する場合) に追加します。

(継承元 Reference)
Equals(Object)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
Get()

この参照オブジェクトの参照先を返します。

(継承元 Reference)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()
古い.

オブジェクトへの参照がなくなったとガベージ コレクションによって判断されたときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
RefersTo(Object)

この参照オブジェクトの参照先が objされているかどうかをテストします。

(継承元 Reference)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
ToArray<T>()

このJava配列ラッパーからマネージド配列を作成します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

相互運用ランタイムからこのJava ピアの登録を解除します。

(継承元 Object)
Wait()

現在のスレッドが起動するまで待機します。通常は、 <em>notified</em> または <em>interrupted</em>。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)
Wait(Int64)

現在のスレッドは、通常、 <em>notified</em> または <em>interrupted</em>、または一定のリアルタイムが経過するまで、起動されるまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
IJavaPeerable.Disposed()

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
IJavaPeerable.Finalized()

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

(継承元 JavaObject)

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

メモリの需要に応じてガベージ コレクターの判断でクリアされるソフト参照オブジェクト。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象