2010-02-24 23 views

risposta

66

Does ByteArrayOutputStream.close() rilascia davvero la memoria?

No. Non fa assolutamente nulla. Potete guardare il suo codice sorgente:

public void close() throws IOException { 
} 

Per rilasciare la memoria, assicurarsi che non vi siano riferimenti ad esso e lasciare che il Garbage Collector fare la sua cosa. Proprio come con qualsiasi altro oggetto normale.

Gli stream basati su file e socket sono speciali perché utilizzano risorse del sistema operativo non di memoria (handle di file) che possono essere esaurite dalla memoria. Ecco perché chiuderli esplicitamente è importante. Ma questo non si applica allo ByteArrayOutputStream basato esclusivamente sulla memoria.

+4

(le risorse di heap C sono anche importanti - ad esempio, flusso in 'java.util.zip' sfortunatamente.) –

Problemi correlati