¿Cómo es el adecuado para cerrar y "destruir" un objeto en Java

Fagam32:

Tengo un mapa

public class MyMap implements Map<String,String>

Se hace algunas cosas en el PP y se debe hacer una de las siguientes destruir métodos:

  1. Si recolector de basura destruido sin myMap close()de lo que debería ejecutar clear()el método
  2. Si el objeto destruye después close(), todos los datos que guarda en el PP

Se debe trabajar como FileWriter. Si cierra la corriente - de datos ahorra, si no lo hace - se pierde :(

¿Qué debo usar? finalize(), Sólo tiene que poner en práctica Closeableo AutoCloseableo algo diferente?

Dnlst:

finalize()está en desuso desde Java 9 . No se puede llamar si el VM sale: si se llama a Runtime.runFinalizersOnExit(true)que se ejecutará (pero hay otros problemas con esto).

En su lugar debe aplicar AutoClosable.

Esto permite cerrar automáticamente el Mapcon una try-with-resources.

También puede close()el FileWriteren su close()método como FileWriterimplementos Closeable(incluso AutoCloseable) también.

Si desea, puede anular el finalize()método como una copia de seguridad en caso de que el cierre no funcionaba correctamente, pero cuidar de los problemas de rendimiento y los siguientes como mis estados de origen:

  • Siempre llame  super.finalize() en su  finalize() método.
  • No ponga la lógica de aplicaciones críticas en el tiempo  finalize(), ya que es impredecible.
  • No utilice  Runtime.runFinalizersOnExit(true); , ya que puede poner en peligro su sistema.
  • Captura y registro de excepciones por sí mismo como el sistema de las ignorarán.

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=478477&siteId=1
Recomendado
Clasificación