Forse sono riuscito a risolvere il problema, ho fatto cosi:

codice:
File file = new File(percorsoFile);
FileInputStream fis = new FileInputStream(file);
			
byte[] dati = new byte[DIMENSIONE];	
int quanti;

while((quanti = fis.read (dati)) > 0)
{
    out.writeObject (new MessaggioDati( dati,
    		                            quanti) );	
    dati = new byte[DIMENSIONE];
    out.reset();
}

in.close();
out.close();
Praticamente avendo aggiungo la out.reset(); e' come se creassi un nuovo ObjectOutputStream ogni volta giusto? In questo modo il Garbage Collector quando partira' vedra' tutti questi oggetti non riferiti e li toglie.

Ho provato a trasferire il file da 320 MB ( usando 2 pc ) e tutto e' andato a buon fine, sara' stato un caso... ?