SoftReference Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria.
[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
- Herencia
- Atributos
Comentarios
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria.
Supongamos que el recolector de elementos no utilizados determina en un momento determinado que un objeto es accesible temporalmente. En ese momento, puede optar por borrar de forma atómica todas las referencias suaves a ese objeto y todas las referencias suaves a cualquier otro objeto accesible suavemente desde el que ese objeto sea accesible a través de una cadena de referencias seguras. Al mismo tiempo o en algún momento posterior, pondrá en cola las referencias suaves recién borradas registradas con colas de referencia.
Se garantiza que todas las referencias suaves a objetos accesibles temporalmente se han borrado antes de que la máquina virtual inicie un OutOfMemoryError. De lo contrario, no se colocan restricciones en el momento en que se borrará una referencia temporal o se borrará el orden en el que se borrará un conjunto de estas referencias a objetos diferentes. Sin embargo, se recomienda que las implementaciones de máquina virtual desactiven las referencias suaves creadas recientemente o usadas recientemente.
<h3>Evite referencias suaves para el almacenamiento en caché</h3> En la práctica, las referencias suaves son ineficaces para el almacenamiento en caché. El tiempo de ejecución no tiene suficiente información sobre qué referencias se deben borrar y cuáles mantener. Lo más grave es que no sabe qué hacer cuando se le da la opción de borrar una referencia suave y aumentar el montón.
La falta de información sobre el valor de la aplicación de cada referencia limita la utilidad de las referencias suaves. Las referencias que se borran demasiado pronto provocan un trabajo innecesario; aquellos que se borran demasiado tarde desperdician memoria.
La mayoría de las aplicaciones deben usar una android.util.LruCache en lugar de referencias suaves. LruCache tiene una directiva de expulsión efectiva y permite al usuario ajustar la cantidad de memoria asignada.
Agregado en la versión 1.2.
Java documentación para java.lang.ref.SoftReference.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.
Constructores
| Nombre | Description |
|---|---|
| SoftReference(IntPtr, JniHandleOwnership) |
Constructor utilizado al crear representaciones administradas de objetos JNI; llamado por el tiempo de ejecución. |
| SoftReference(Object, ReferenceQueue) |
Crea una nueva referencia temporal que hace referencia al objeto especificado y se registra con la cola especificada. |
| SoftReference(Object) |
Crea una nueva referencia temporal que hace referencia al objeto especificado. |
Propiedades
| Nombre | Description |
|---|---|
| Class |
Devuelve la clase en tiempo de ejecución de este |
| Handle |
Identificador de la instancia de Android subyacente. (Heredado de Object) |
| IsEnqueued |
Comprueba si este objeto de referencia está en su cola asociada, si existe. (Heredado de Reference) |
| JniIdentityHashCode |
Obtiene el código hash de identidad asignado a este Java del mismo nivel por el tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| JniManagedPeerState |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| JniPeerMembers |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| PeerReference |
Obtiene la referencia de objeto JNI para este Java del mismo nivel. (Heredado de Object) |
| ThresholdClass |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
| ThresholdType |
Esta API admite la infraestructura mono para Android y no está pensada para usarse directamente desde el código. |
Métodos
| Nombre | Description |
|---|---|
| Clear() |
Borra este objeto de referencia. (Heredado de Reference) |
| Clone() |
Crea y devuelve una copia de este objeto. (Heredado de Object) |
| Construct(JniObjectReference, JniObjectReferenceOptions) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| Dispose() |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| Dispose(Boolean) |
Libera los recursos mantenidos por este Java del mismo nivel. (Heredado de Object) |
| DisposeUnlessReferenced() |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| Enqueue() |
Agrega este objeto de referencia a la cola con la que está registrado, si existe. (Heredado de Reference) |
| Equals(Object) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| Equals(Object) |
Indica si algún otro objeto es "igual a" este. (Heredado de Object) |
| Get() |
Devuelve el referente de este objeto de referencia. (Heredado de Reference) |
| GetHashCode() |
Devuelve un valor de código hash para el objeto . (Heredado de Object) |
| JavaFinalize() |
Lo llama el recolector de elementos no utilizados en un objeto cuando la recolección de elementos no utilizados determina que no hay más referencias al objeto . (Heredado de Object) |
| Notify() |
Activa un único subproceso que está esperando en el monitor de este objeto. (Heredado de Object) |
| NotifyAll() |
Activa todos los subprocesos que están esperando en el monitor de este objeto. (Heredado de Object) |
| RefersTo(Object) |
Comprueba si el referente de este objeto de referencia es |
| SetHandle(IntPtr, JniHandleOwnership) |
Establece la propiedad Handle. (Heredado de Object) |
| SetPeerReference(JniObjectReference, JniObjectReferenceOptions) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| ToArray<T>() |
Crea una matriz administrada a partir de este contenedor de matriz Java. (Heredado de Object) |
| ToString() |
Devuelve una representación de cadena del objeto . (Heredado de Object) |
| UnregisterFromRuntime() |
Anula el registro de este Java del mismo nivel del tiempo de ejecución de interoperabilidad. (Heredado de Object) |
| Wait() |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser em notificado/em< o >em<interrumpido>/em<.><> (Heredado de Object) |
| Wait(Int64, Int32) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
| Wait(Int64) |
Hace que el subproceso actual espere hasta que se despierte, normalmente por ser <em>notificado</em> o <em>interrumpido</em>, o hasta que haya transcurrido una cierta cantidad de tiempo real. (Heredado de Object) |
Implementaciones de interfaz explícitas
| Nombre | Description |
|---|---|
| IJavaPeerable.Disposed() |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| IJavaPeerable.Finalized() |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| IJavaPeerable.JniObjectReferenceControlBlock |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| IJavaPeerable.SetJniIdentityHashCode(Int32) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
| IJavaPeerable.SetPeerReference(JniObjectReference) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. (Heredado de JavaObject) |
Métodos de extensión
| Nombre | Description |
|---|---|
| GetJniTypeName(IJavaPeerable) |
Obtiene el nombre JNI del tipo de la instancia |
| JavaAs<TResult>(IJavaPeerable) |
Intente coerción |
| JavaCast<TResult>(IJavaObject) |
Realiza una conversión de tipos comprobados en tiempo de ejecución de Android. |
| JavaCast<TResult>(IJavaObject) |
Objetos de referencia temporal, que se borran a discreción del recolector de elementos no utilizados en respuesta a la demanda de memoria. |
| TryJavaCast<TResult>(IJavaPeerable, TResult) |
Intente coerción |