2011-07-14 12 views
8

¿Hay alguna manera de "limpiar" objetos y otras variables que crees? ¿O se eliminan automáticamente o tengo todo este concepto mal? ¿Cuál es la forma correcta de hacer esto? Estoy tratando de evitar el GC tanto como sea posible.Android adecuada limpieza/eliminación

Respuesta

12

La única manera de limpiar en un lenguaje de GC sin administración de memoria es el GC. Puede forzar a GC pero no se lo recomienda, el GC es bastante bueno, para ser más proactivo, configure objetos para que el GC lo elimine.

Adición:

también tratar de hacer que los objetos lo más local posible, de esa manera son GCed ya que alcance a cabo.

2

En su mayor parte, se limpian siempre que no se mantenga una referencia al objeto (variable). Sin embargo, hay algo como cursor y bitmap que deben cerrarse antes de que se puedan eliminar para evitar pérdidas de memoria.

No creo que tenga que preocuparse por el GC, siempre y cuando la creación de su objeto no sea exagerada. Nota: GC es una parte de Java. No puedes evitarlo.

Apéndice 1: Si realmente está tan preocupado por eso, podría reutilizar las variables. De esta forma, mantendrá la creación de objetos al mínimo, pero al hacerlo perderá esa variable y no podrá almacenar una amplia gama de datos.

3

Llamar a System.gc() forzará la recolección de basura.

Hay un sistema que cuenta las referencias a los objetos que crea. Si está girando mucho y creando muchos objetos, creará períodos de tiempo donde se acumularán. El sistema recogerá la basura cuando su procesador no está haciendo nada, o esperará hasta que necesite más memoria libre antes de que se produzca la recolección. Si ha estado procesando durante algún tiempo, experimentará hipo en su rendimiento debido a la recolección de basura que ocurre durante sus procesos.

favor ver esta página y busque "Garbage Collection"

http://developer.android.com/guide/practices/design/performance.html

NOTA: Cualquier cosa creada con un contexto de aplicación vivirá hasta el final de la ejecución de la aplicación. Todo lo creado con un Contexto de actividad vivirá hasta el final de la actividad. ¡Estas dos situaciones pueden causar pérdidas de memoria!

3

Para una respuesta más completa específica para Android:

Asegúrese de revisar la application lifecycle para android. Te ayudará a evitar fugas de actividad en Android.

2

Las actividades de Android tienen el método onDestroy(). Puede usar este método para cerrar las conexiones abiertas o los diálogos o cerrar algunas tareas pendientes.
También puede leer acerca de Java GC para obtener un mejor entendimiento de la misma. Recomendaría el libro de SCJP, capítulo de recolección de basura. Explica bien cuando un objeto se vuelve elegible para la recolección de basura.

+0

Creo que OP está hablando de objetos ont actividades. Como regla general, NO deberías llamar a tus actividades en el método Destroy(). Solo deja que el SO lo maneje. – AedonEtLIRA

Cuestiones relacionadas