tengo el siguiente código que produce una excepción OutOfMemory:No se puede escribir en DataOutputStream más allá de un tamaño específico - OutOfMemoryError
byte[] buf = new byte[10240];
int len = 0;
DataOutputStream dataOS = new DataOutputStream(conn.getOutputStream());
while ((len = _inputStream.read(buf)) > 0) {
System.out.println("len : " + len);
System.out.println("Going to write buf into dataOS : " + buf.length);
dataOS.write(buf, 0, len);
System.out.println("dataOS.size() : " + dataOS.size());
}
_inputStream.close();
El siguiente es las últimas líneas de la salida de depuración:
len : 10240
Going to write buf into dataOS : 10240
dataOS.size() : 342804702
len : 10240
Going to write buf into dataOS : 10240
dataOS.size() : 342814942
len : 10240
Going to write buf into dataOS : 10240
La excepción se produce cuando intento escribir en el dataOS más allá de 342814942.
¿Podría alguien ayudarme a manejar esto?
Gracias!
Como Sharakan dice, se debe vaciar el búfer con regularidad, pero si realmente no desea eliminar, aumentar la asignación de memoria para la JVM (parámetro -Xmx sobre el inicio de Java). – Renato