Ich lese in einer Textdatei mit FileInputStream
, die den Inhalt der Datei in ein Byte-Array legt. Ich konvertiere dann das Byte-Array mit einem neuen String (Byte) in einen String.Textdateianalyse in Java
Sobald ich die Zeichenfolge habe ich String.split("\n")
verwenden, um die Datei in ein String-Array zu teilen und dann das String-Array und Parsing es durch eine String.split(",")
und halten Sie den Inhalt in einem Arraylist.
Ich habe eine 200MB + Datei und es läuft nicht mehr genug Speicher, wenn ich die JVM mit einem 1GB Speicher starten. Ich weiß, dass ich irgendwo etwas richtig machen muss, ich bin mir nur nicht sicher, ob die Art, wie ich analysiere, falsch ist oder die Datenstruktur, die ich verwende.
Es dauert auch ungefähr 12 Sekunden, um die Datei zu analysieren, die wie viel Zeit scheint. Kann jemand darauf hinweisen, was ich tue, was dazu führt, dass mir der Speicher ausgeht und was dazu führen könnte, dass mein Programm langsam läuft?
Der Inhalt der Datei sehen wie folgt:
"12334", "100", "1.233", "TEST", "TEXT", "1234"
"12334", "100", "1.233", "TEST", "TEXT", "1234"
.
.
.
"12334", "100", "1.233", "TEST", "TEXT", "1234"
Dank
Bitte klarstellen: Sagen Sie, dass Sie -Xmx1024m verwenden, um Ihre JVM zu starten, und Sie immer noch einen OutOfMemoryError erhalten? – duffymo
Mit einem kompilierten Muster wäre besser (sogar rollen Sie Ihre eigene fachliche Aufteilung). Aber es sieht so aus, als ob Sie nur eine Menge Objektdaten haben. –
Duffymo, das ist genau der Fall. Ich setze die JVM mit der -Xmx1024m und bekomme OutOfMemoryError –