Je lis dans un fichier texte en utilisant FileInputStream
qui place le contenu du fichier dans un tableau d'octets. Je convertis ensuite le tableau d'octets en une chaîne en utilisant new String (octet).Analyse de fichier texte en Java
Une fois que j'ai la chaîne j'utilise String.split("\n")
pour diviser le fichier en un tableau String, puis en prenant ce tableau de chaînes et en l'analysant en faisant un String.split(",")
et maintenez le contenu dans un Arraylist.
J'ai un fichier 200MB + et il manque de mémoire lorsque je démarre la JVM avec 1 Go de mémoire. Je sais que je dois faire quelque chose correctement quelque part, je ne suis pas sûr si la façon dont je suis l'analyse est incorrecte ou la structure de données que j'utilise.
Cela me prend aussi environ 12 secondes pour analyser le fichier, ce qui me semble être beaucoup de temps. Est-ce que quelqu'un peut indiquer ce que je fais peut-être qui me fait perdre la mémoire et ce qui peut ralentir mon programme?
Le contenu du regard de fichier comme indiqué ci-dessous:
"12334", "100", "1.233", "TEST", "TEXT", "1234"
"12334", "100", "1.233", "TEST", "TEXT", "1234"
.
.
.
"12334", "100", "1.233", "TEST", "TEXT", "1234"
Merci
Veuillez clarifier: Dites-vous que vous utilisez -Xmx1024m pour démarrer votre machine virtuelle Java et que vous obtenez toujours une erreur OutOfMemoryError? – duffymo
Utiliser un modèle compilé serait mieux (même lancer votre propre groupe de spécialistes). Mais il semble que vous ayez juste beaucoup de données d'objet. –
duffymo, c'est exactement le cas. Je suis en train de régler la JVM avec le -Xmx1024m et obtenir hte OutOfMemoryError –