Каков максимальный размер файла, который может обрабатываться JVM? - PullRequest
5 голосов
/ 27 декабря 2010

Я хотел бы знать максимальный размер файла , который может быть прочитан кодом Java?

Я хотел обработать файл размером 100 МБ .возможно ли это?

Если возможно, каковы начальные настройки JVM , которые мне нужно сделать?

Пожалуйста, порекомендуйте несколько рекомендаций по обработке файла. как использовать ObjectInputStream, FilterInputStream и т. Д. Использовать байтовый массив для хранения содержимого файла и т. Д.

Ответы [ 5 ]

4 голосов
/ 27 декабря 2010

Единственный известный мне максимум - это максимальный размер сообщения () - Long.Эта длина составляет 2 ^ 62 - 1 или очень очень большая.

Java не будет хранить весь файл в памяти за один раз.Если вы хотите сохранить часть файла в памяти, вы должны использовать один из классов «Buffered» (имя класса начинается с Buffered).Эти классы буферизуют часть файла для вас в зависимости от установленного вами размера буфера.

Точные классы, которые вы должны использовать, зависят от данных в файле.Если вы более конкретны, мы могли бы помочь вам выяснить, какие классы использовать.

(Одно скромное примечание: серьезно, 100 МБ? Это довольно мало.)

3 голосов
/ 27 декабря 2010

Какое наибольшее число вы можете написать? Это максимальный размер.

Общий размер файла не имеет значения , если вы читаете его кусками; в мире нет правила, которое гласило бы, что вы должны прочитать ваш файл размером 100 мегабайт за один раз, вместо этого вы можете прочитать его, скажем, в 10-мегабайтных блоках. Что действительно важно, так это то, как вы используете эти входящие данные и нужно ли вам полностью хранить продукт необработанных данных (например, , если данные представляют собой трехмерную модель здания, как вам нужно их внутренне представлять) 1008 *) или только соответствующие части (, например, поиск первых десяти соответствий некоторому предложению из огромного текстового файла ).

Поскольку существует множество возможных способов обработки данных, нет исчерпывающего полного ответа на ваш вопрос.

2 голосов
/ 27 декабря 2010

Не существует максимального размера файла, который можно прочитать теоретически, но я думаю, что это Integer.MAX_VALUE, потому что вы не можете инициализировать размер charBuffer больше Integer.MAX_VALUE

char[] buffer = new char[/* int size */];
char[] buffer = new char[Integer.MAX_VALUE]; // maximum char buffer

BufferedReader b = new BufferedReader(new FileReader( new File("filename")));
b.read(buffer);
1 голос
/ 27 декабря 2010

До тех пор, пока у вас есть более 100 МБ свободного места, вы сможете загружать весь файл в память одновременно, хотя, вероятно, вам и не понадобится.

Кстати: в смысле значения букв

M = Mega or 1 million for disk or 1024^2 for memory.
B = Bytes (8-bits)
b = bit e.g. 100 Mb/s
m = milli e.g. mS - milli-seconds.

100 миллибитов имеют смысл только для сжатых данных, но я предположил, что это не то, о чем вы говорите.

1 голос
/ 27 декабря 2010

Нет определенного максимального размера файла, поддерживаемого Java, все зависит от того, на какой ОС вы работаете.100 мегабайт не будет большой проблемой, даже на 32-битной ОС.

Вы не сказали, хотите ли вы сразу прочитать файл весь в память.Вы можете обнаружить, что вам нужно обрабатывать файл только за раз.Например, текстовый файл может обрабатываться строкой за раз, поэтому не нужно загружать весь файл.Просто прочитайте строку за раз и обработайте каждую из них.

Если вы хотите прочитать весь файл в один блок памяти, то вам может потребоваться изменить размер кучи по умолчанию, выделенный для вашей JVM.Во многих JVM по умолчанию установлено 128 МБ, что, вероятно, недостаточно для загрузки всего файла, и при этом еще достаточно места для других полезных вещей.Просмотрите документацию для своей JVM, чтобы узнать, как увеличить размер кучи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...