2013-12-12 4 views
1

У меня есть приложение Java, которое бросает ошибку кучи Java Heap Memory. Мое приложение посвящено преобразованию файла в формат .csv и загрузке его в БД. Когда содержимое файла меньше, мое приложение работает хорошо. Но когда у меня есть сотни тысяч записей, я получаю память размером с кучу. Каковы все возможности утечки памяти при использовании таких классов, как InputStream, OutputStream, BufferedWriter и т. Д., Пожалуйста, помогите мне решить эту ошибку памяти размера кучи. Я застрял с ним неделю. Ниже приводится ошибка размер Heap я получитьРазмер кучи Java Размер памяти

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

+1

Можете ли вы предоставить код вашего приложения? – hveiga

ответ

1

при запуске файла необходимо добавить -Xmx ## в командной строке.

java -Xmx4G 

предоставит вам JVM с 4 ГБ.

РЕДАКТИРОВАТЬ: если возможно, вы должны загрузить один бит за раз, как указано в @Oleg.

+0

Прошу прощения, я не понимаю, как увеличить размер памяти кучи. Мой вопрос в том, что всякий раз, когда я запускаю приложение, мне нужно увеличить размер кучи, прежде чем я запустил приложение с вышеуказанным кодом? – user1929839

0

Я предлагаю вам увеличить размер кучи, вы можете использовать java -Xmx2048m в командной строке.

у вас будет до 2 ГБ памяти.

Перейдите по этой ссылке для more

4

Итак, вы читаете весь файл в память, а затем промойте его в БД.

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

Невозможно дать более подробный ответ без кода.

+0

При преобразовании файла в формат .csv я делаю это в целом, но при загрузке записей в БД я не загружаю запись в целом в БД. Я загружаю его в пакетном режиме. – user1929839

0

Вы можете увеличить размер кучи.

Если вы можете поделиться код, я мог бы сказать вам, каким образом вы можете уменьшить использование ресурсов

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