Il codice di sotto legge un file binario e lo spezza in n file più piccoli.
Utilizza un Buffer di memoria.
Lanciando il programma ho osservato da Gestione Attività di Windows, l'occupazione di memoria ed ho visto che l'andamento dell'uso della memoria rispetto al tempo è una specie di sinusoide orizzontale, ossia un picco di memoria ed un rilascio, fino alla fine. Questo a 32bit
In un sistema a 64 bit con 8Gb di memoria, la memoria non viene rilasciata, ma viene occupata fino ad esaurire gli 8 G della RAM
Mi sapete dire cosa sbaglio nel codice?
Ciao 
codice:
Using r As Stream = File.Open(NomeFileInput, FileMode.Open, FileAccess.Read), br As New BinaryReader(r)
Dim NumeroRecord As Long = r.Length
Dim RighePagina As Long = 100000000 '500000
Dim Pagine As Integer = CInt(Math.Ceiling(CDbl(NumeroRecord) / CDbl(RighePagina)))
For pagina As Integer = 1 To Pagine
Dim inizio As Long = (pagina - 1) * RighePagina
Dim length As Long = Math.Min(RighePagina, NumeroRecord - inizio)
Dim fine As Long = inizio + length - 1
Dim NomeFileOutput As String = String.Format("c:\tmp\filepart_{0:0000}.dat", pagina)
Dim buffer As Byte() = br.ReadBytes(CInt(length))
Using w As Stream = File.Open(NomeFileOutput, FileMode.Create, FileAccess.Write), bw As New BinaryWriter(w)
bw.Write(buffer)
'bw.Flush()
End Using
Next
End Using