Geheugen terugvragen

Status
Niet open voor verdere reacties.

famlam

Gebruiker
Lid geworden
15 okt 2008
Berichten
416
Ik heb een bepaalde functie die alle bytes van een bestand uit moet lezen om te kunnen werken. Alleen zijn deze bestanden af en toe zo'n 500 tot 700 MB groot... Als de functie afgelopen is blijft dit nog in het geheugen achter (volgens taakbeheer blijft het programmaatje die 700MB geheugen hebben)...

Hoe kan ik dit geheugen terugvragen?
ik heb de volgende dingen al (tevergeefs) geprobeerd:
  • Erase rawBytes
  • GC.Collect()
  • For i As Integer = 0 to rawBytes.Length - 1
    rawBytes = Nothing
    Next


Dit is de (zeer ingekorte variant) van de code waar het om gaat:
Code:
Private Sub BGWA_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorkerA.DoWork
'... wat if-then controles
Dim FStream As New IO.FileStream(TextBoxBestand.Text, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read)
'... wat code die de FileStream gebruikt
FStream.Seek(0, IO.SeekOrigin.Begin)
Try
  Dim rawBytes(FStream.Length - 1) As Byte
  If Not Annuleren Then FStream.Read(rawBytes, 0, FStream.Length)
  '... wat code die de bytes nodig heeft
Catch OutOfMemoryEx As OutOfMemoryException
  If Not Annuleren Then MessageBox.Show("...", "", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
FStream.Close()
End Sub
 
Ja, want mijn computer heeft slechts 1GB ram en 700MB vertraagd m'n pc ontzettend. Ook nadat het geheugen terug zou moeten zijn is mijn pc nog steeds traag... en dat is het niet als het programma het bestand nog niet geladen heeft.
Het is echt het probleem dat ik het geheugen niet 'terugkrijg'. Weet iemand daar een methode voor?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan