Можем ли мы использовать концепцию Object Pooling вместо объявления байтового массива большого размера? - PullRequest
0 голосов
/ 20 января 2012

У меня вопрос, можем ли мы использовать концепцию пула объектов вместо объявления массива байтов большого размера размером 20 МБ. Если да, то как? На самом деле у меня есть утверждение как byte[] fileData = new byte[2097152];, потому что я должен прочитать столько данных из видеофайла, который часто возвращает исключение OutOfMemory в приложении после того, как мы пытаемся непрерывно обращаться к одному и тому же java-файлу 20-24 раза. Означает, что это не ошибка, в этом случае куча памяти переполняется, и GC не может очистить то же самое в данный промежуток времени, поэтому он возвращает исключение OutOfMemory. Итак, можем ли мы использовать здесь ObjectPooling концепцию JAVA для более высокого использования памяти.

Заранее спасибо.

1 Ответ

0 голосов
/ 20 января 2012

Вы пытаетесь решить не ту проблему ... вы должны сосредоточиться на том, чтобы не загружать весь 2 МБ файл в ОЗУ, потому что вам действительно не нужно это делать.

Создать небольшое окно в ОЗУ, 64KB сказать, и загрузить файл по частям.Это то, что делают видеоплееры и т. Д.

(при этом 2 МБ - это не , а . Если это проще, просто убедитесь, что вы выделяете его только один раз и затем повторно используете это распределение.)

...