Java程序中的'std :: bad_alloc'

问题描述:

我有一个java程序,我启动并运行好几天。这个过程的日志看起来很好,直到过程的生命周期结束时,我看到以下两行,然后没有任何记录。Java程序中的'std :: bad_alloc'

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或用C/C++库类似的代码? –

+0

听起来像是一个小内存泄漏,操作系统告诉jvm尝试分配内存时出现问题。 – Javant

您已经用完本机内存(与java堆不同)。为了解决这个问题,你需要了解你的代码(或类路径上的jar)是否正在使用C++,并确保及时地处理这些事情。

举例来说,如果你没有调用close你可能遇到同样的问题: https://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html#close()

+0

是C++我会认为它是c – Javant

+0

C没有范围解析运算符 – amos