2016-07-25 6 views
-2

Я хочу написать большой файл, но я получаю OutOfMemoryError, который ожидается. Я хочу вернуть сообщение для OutOfMemoryError. Я использовал try-catch, но не смог поймать ошибку. Пожалуйста, предложитеЗахват OutOfMemoryError в Java

+0

Я знаю, что это звучит бесполезно, но как только ваша JVM потеряла память, на нее нельзя положиться, чтобы что-то сделать. Есть ли способ остановить появление OutOfMemoryError? –

+0

Второе, что сказал Дэвид. Вам нужно сначала изучить, что вызывает «OutOfMemoryError», так как это (почти) всегда ошибка пользователя. –

+0

Можете ли вы представить минималистский пример, демонстрирующий поведение, которое вы описываете? – nasukkin

ответ

0

Насколько велик ваш файл и каков размер вас Xmx?

Лучший способ: handle найти причину OutOfMemoryError, запустив программу с параметром jvm -XX:+HeapDumpOnOutOfMemoryError. Это создаст heapdump в виде файла .hprof. Затем вы можете проанализировать этот файл с помощью Java Memory Analyzer, чтобы узнать, где находится утечка памяти.

+0

В этот момент мне не нужно обрабатывать ошибку. Теперь для каждой задачи статус обновляется (если файл паркета был успешно написан). Если во время записи возникла какая-либо ошибка, мне нужно установить статус как сбой. Но я не могу поймать это исключение. Вот мой фрагмент кода: dfTask.write(). Mode (SaveMode.Append) .parquet (filePath); при сбое мне нужно отправить сообщение – treena

+0

По ручке я имею в виду найти причину того, что вызывает ошибку. – noscreenname

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