2016-12-07 3 views
0

У меня есть файл, содержащий одну строку данных. Размер файла - 300 МБ.размер переменной java может содержать

Данные этого файла считываются целиком как одна строка и сохраняются в одну строковую переменную. Затем я использую эту переменную для своих поисков.

Так что мой вопрос: может ли строка java string содержать эту тяжелую строку?

Я думаю, что проблема с памятью может произойти .. но нужны предложения.

Просьба представить свои предложения.

Спасибо!

+1

Предложения для чего? Не совсем понятно, о чем вы просите. – rmlan

+2

В итоге вы получите 2 байта на единицу кода UTF-16 ... если ваш файл - это все ASCII, например, у вас будет строка 600 МБ в памяти (в лучшем случае - в зависимости от того, как вы читаете файл, лежащий в основе 'char []' может быть легко большим, таким же образом, что обычно имеет «ArrayList» резервную емкость). –

+0

Да, строка Java может хранить String это большое. Да, вы можете выбежать из кучи. Существуют параметры командной строки, которые позволяют указать максимальное количество кучи при запуске JVM. Это то, что вы ищете? –

ответ

2

Строки Java могут содержать только символы 2147483647 (2^31 - 1) (в зависимости от вашей JVM). Поэтому, если ваша строка больше, вам придется разбить строку. Вы можете разбить строку и сохранить каждое значение в массиве или хеш-карте или любую жизнеспособную структуру данных.

+0

Это теоретический предел, однако фактический предел немного меньше на некоторых JVM из-за того, как реализуются массивы. например Integer.MAX_VALUE-1 или -3. btw +1 –

+0

@ BlackHatSamurai .. Не могли бы вы рассказать, пожалуйста, сколько символов 2147483647 (2^31 - 1) может быть в MB или GB? – kelly

+0

@PeterLawrey это хороший момент. Я уточню свой ответ. Спасибо :) – BlackHatSamurai

Смежные вопросы