2016-08-08 11 views
-1

У меня есть процесс java, который я запускаю и запускаю в течение нескольких дней. Журналы для этого процесса выглядели отлично вплоть до самого конца процесса, когда я вижу следующие две строки, а затем ничего после него.'std :: bad_alloc' в Java-программе

terminate called after throwing an instance of 'std::bad_alloc' 
    what(): std::bad_alloc 

Предполагается, что существует некоторая логика завершения работы, которая выполняется, когда процесс завершается, но эти две строки журнала - все, что я вижу.

В чем причина этой ошибки std::bad_alloc? Я видел несколько других сообщений об этой ошибке, но все они из программистов на C++, тогда как я использую Java, а не C++. Означает ли это ошибку в JVM, или это следствие некоторой связанной с JVM ошибки, такой как OutOfMemoryError?

+0

ваш код, используя некоторые библиотеки DLL или подобные LIBS, написанные на C/C++ ?? –

+0

звучит как небольшая утечка памяти, и операционная система сообщает jvm, что есть проблема с попыткой выделить память. – Javant

ответ

1

У вас закончилась собственная память (отличная от кучи java). Чтобы исправить это, вам нужно понять, какой ваш код (или jars на вашем пути к классам) использует C++ под капотом и следит за тем, чтобы все делалось gc'd своевременно.

Например, если вы не звонили близко вы, возможно, столкнетесь с той же проблемой: https://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html#close()

+0

Это C++ Я бы подумал, что это c – Javant

+0

C не имеет оператора разрешения области – amos