¿Debería cerrar siempre un CachedRowSet incluso si queda fuera del alcance?

Considere el siguiente fragmento de código:

public void getUsers() {
    CachedRowSet rowSet = new CachedRowSetImpl();
    .........     /* Initialize the rowset */
    String query = "SELECT user_id FROM users";
    rowSet.setCommand(query);
    rowSet.execute();
    .........    /* Do some job */

}

Aquí el CachedRowSet El objeto se usa localmente en un método. ¿Debo cerrarlo manualmente aquí o el contenido que contiene se recopilará automáticamente cuando finalice el método?

preguntado el 05 de septiembre de 12 a las 10:09

Si no hay absolutamente ninguna otra referencia a él, será un candidato para la recolección de basura la próxima vez que se realice la recolección de basura; Sin embargo, eso no sucederá necesariamente cuando finalice el método. ¿Te cuesta algo cerrarlo? -

1 Respuestas

desde: http://docs.oracle.com/javase/1.5.0/docs/api/javax/sql/rowset/CachedRowSet.html

Un objeto CachedRowSet es un conjunto de filas desconectado, lo que significa que utiliza una conexión a su fuente de datos solo brevemente. Se conecta a su fuente de datos mientras lee datos para llenarse con filas y nuevamente mientras propaga cambios a su fuente de datos subyacente. El resto del tiempo, un objeto CachedRowSet está desconectado, incluso mientras se modifican sus datos. Estar desconectado hace que un objeto RowSet sea mucho más ágil y, por lo tanto, mucho más fácil de pasar a otro componente. Por ejemplo, un objeto RowSet desconectado se puede serializar y pasar por cable a un cliente ligero, como un asistente digital personal (PDA).

eso significa que no hay problema de conexión para cerrar, así que puedes dejarlo

pero creo que es una buena práctica cerrar siempre lo que abre y no dejarlo en manos del GC, que normalmente no toca ni indica cuándo ejecutar.

dado un servidor lo suficientemente grande con muchas solicitudes, si causa descriptores de archivos abiertos, eventualmente puede ser un problema. asegurarse de que los recursos estén cerrados siempre es lo mejor

Respondido el 05 de Septiembre de 12 a las 11:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.