Ver Mensaje Individual
  #5 (permalink)  
Antiguo 13/03/2010, 01:42
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 20 años, 6 meses
Puntos: 51
Respuesta: Sockets con ficheros grandes --> OutOfMemoryError

Si estas enviando ficheros de ese tamaño y lo que envias son bytes, es una barbaridad usar Object(Input/Output)Stream ya que eso obliga a que el objeto enviado/recibido esté de golpe todo en memoria, así que con ficheros 1/2 Gbde no te cabrá en ninguna máquina de 32bits, suponiendo que sólo tuvieras el programa en memoria.

Lo que tienes que hacer es ir leyendo el fichero con un InputStream "simple" (un BufferedInputStream por ejemplo) y lo que lees de disco, directamente enviarlo. Y al recibirlo, igual, lo lees lo escribes directamente a disco con un simple BufferedOuputStream.

De esta forma, nunca necesitarás tener todo el fichero a la vez en memoria y por tanto tu programa no necesitará que le quepa entero en la JVM.

S!
__________________
Para obtener respuestas, pregunta de forma inteligente o si no, pregunta lo que quieras que yo contestaré lo que me dé la gana.