| |
VB.NET - FortgeschritteneSystem.OutofMemory.Exception | | | Autor: Spassmann | Datum: 28.02.07 09:39 |
| Hi Board,
ich hab ein kleines speicher problem in meiner anwendung.
Ich lese per StreamReader eine PostScript-Datei ein und dabei stürzt er mir ab.
Laut Taskmanager brauch meine App ca. 280 MB Speicher und die PostScript-Datei ist etwa 160 MB groß.
Mein Code sieht so aus:
Public Sub Ersetzen(ByVal inputfilepath As String, ByVal inputfile As _
String, ByVal outputfilepath As String, ByVal outputfile As String, ByVal _
searchcriteria As String, ByVal replacement As String)
Dim ifile As IO.StreamReader
Dim ofile As IO.StreamWriter
ifile = New IO.StreamReader(inputfilepath & inputfile)
ofile = New IO.StreamWriter(outputfilepath & outputfile)
Dim zeilen As String
Try
zeilen = ifile.ReadToEnd
ifile.Close()
Catch ex As Exception
MsgBox(ex.Message, , "Einlesen zum Ersetzen") <<-------- hier _
steigt er aus
Exit Sub
End Try
Try
zeilen = zeilen.Replace(searchcriteria, replacement)
Catch ex As Exception
MsgBox(ex.Message, , "Ersetzen der Strings")
End Try
Try
ofile.WriteLine(zeilen)
Catch ex As Exception
MsgBox(ex.Message, , "Schreiben der Ersetzten Datei")
End Try
ofile.Close()
End Sub Hat jemand eine Ahnung wie ich das anders schreiben kann/muss, damit das funktioniert. Ich hab 1GB Ram in meiner Kiste und die ist noch lang nicht ausgereizt, daher habe ich keinen Dunst wie ich das Prob umgehen kann.
Wär echt cool wenn jemand Rat wüsste.
Danke
Spassmann | |
Re: System.OutofMemory.Exception | | | Autor: FZelle (Moderator) | Datum: 28.02.07 11:18 |
| Tja, das wird wohl so nichts.
Du liesst den Text in einen String ein.
Dieser String ist ein Unicode string, also 2 byte pro char.
Dann Ersetzt Du etwas darin, jetzt wird ein neuer String erzeugt,
der Alte besteht aber weiter.
Du hast jetzt also 4 * 160MB + sonstiges im Speicher.
Du solltest also die Datei lieber Zeilenweise bearbeiten. | |
Re: System.OutofMemory.Exception | | | Autor: Spassmann | Datum: 28.02.07 15:09 |
| Jo hab ich jetzt so gemacht und so funzt es.
Ich hab aber deine Rechnung leider nicht verstanden.
Wie kommst du auf 4x 160 MB?
Kannst du mir das nochmal erklären?
Gruß
Spassmann | |
Re: System.OutofMemory.Exception | | | Autor: FZelle (Moderator) | Datum: 28.02.07 15:50 |
| Jedes Zeichen (char ) deiner 160MB Datei entspricht 2 byte in Unicode.
Also 2 mal die Chars, mal 2 strings. | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|