java прочитал 200мб файл, при загрузке в память сколько памяти понадобится? - PullRequest
1 голос
/ 23 марта 2012

У меня есть файл с 200 МБ, файл в следующем формате

каждая строка представляет собой интервал 0,1,2,3 целое число.

0 1 2 0 1 3...

Итак, если я хочу прочитать этот файл в память, используя массив, используя Vector?или используя ByteArray?или строка?Можно оценить, каков объем памяти, чтобы я установил соответствующий размер кучи Java?256мб хватит?

1 Ответ

0 голосов
/ 23 марта 2012

Для размера строки x 2 - строка использует символ для каждого байта (вы можете установить флаг виртуальной машины для использования байта)

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

Для списка - подсчитать, сколько целых чисел.Для каждого целого числа он создает один указатель на int (4 или 8 байтов в зависимости от платформы - вы можете установить опцию jvm для использования 32-битного адреса на 64-битной машине -XX:+UseCompressedOops)

Количество целых чисел x ((размеродного целого числа) + (указатель на целое число в списке)) = 2 * (количество целых чисел) * (размер одного указателя)

ByteBuffer - такой же размер, как файл

Лучшее решениеявляется примитивным массивом - байтовым, коротким или целым.Это и есть зависимости целочисленной точности.Для байта у вас есть (число целых) байтов - может быть меньше, чем размер файла.

...