java lire le fichier 200mb, lors de la charge en mémoire, combien de mémoire aura besoin?


J'ai un fichier de 200 mo, le fichier avec le format suivant

Chaque ligne est un entier 0,1,2,3 espacé.

0 1 2 0 1 3...

Donc, si je veux lire ce fichier en mémoire en utilisant array, en utilisant Vector? ou en utilisant ByteArray? ou String? peut estimer quel est le cose de la mémoire, de sorte que je définis la taille de tas java appropriée? 256 mo assez?

Author: om-nom-nom, 2012-03-23

1 answers

Pour la taille de chaîne x 2 chaînes, utilisez char pour chaque octet (vous pouvez définir l'indicateur de la machine virtuelle pour utiliser octet)

-XX:+UseCompressedStrings   
   Use a byte[] for Strings which can be represented as pure ASCII. 
   (Introduced in Java 6 Update 21 Performance Release)

Pour la liste-comptez combien d'entiers. Pour chaque entier, il crée un pointeur sur int (dépendance de 4 octets ou 8 octets sur la plate - forme-vous pouvez définir l'option jvm pour utiliser une adresse 32 bits sur une machine 64 bits -XX:+UseCompressedOops)

Nombre d'entiers x ((de la taille d'un Entier) + (pointeur d'Entier dans la liste)) = 2 * (nombre d'entiers) * (taille d'un pointeur)

ByteBuffer - la même taille j'aime le fichier

La meilleure solution est le tableau primitif - octet, court ou int. Il dépendants de l'entier de précision. Pour l'octet que vous avez (nombre d'int) octets - peut être inférieur à la taille du fichier.

 0
Author: Andrzej Jozwik, 2012-03-23 13:25:56