我有一个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 :(得分:1)
您已经耗尽了本机内存(与Java堆不同)。要解决这个问题,你需要了解你的哪些代码(或类路径中的jar)正在使用C ++并确保事情及时得到gc&#d。
例如,如果你没有打电话,你可能会遇到同样的问题: https://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html#close()