【问题标题】:'std::bad_alloc' in Java programJava 程序中的“std::bad_alloc”
【发布时间】:2016-08-08 19:27:17
【问题描述】:

我有一个 java 进程,我启动并运行了几天。这个进程的日志看起来很好,直到进程生命周期的最后我看到以下两行,然后什么都没有。

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

应该有一些在进程结束时执行的关闭逻辑,但是这两条日志行是我所看到的。

这个std::bad_alloc 错误的原因是什么?我看过其他几篇关于这个错误的帖子,但它们都来自 C++ 程序员,而我使用的是 Java,而不是 C++。这是否表明 JVM 中存在错误,或者是某些 JVM 相关错误(例如 OutOfMemoryError)的结果?

【问题讨论】:

  • 您的代码是否使用了一些用 c/c++ 编写的 dll 或类似的库??
  • 听起来像是小内存泄漏,操作系统告诉 jvm 尝试分配内存时出现问题。

标签: java jvm-crash alloc


【解决方案1】:

您的本机内存已用完(这与 java 堆不同)。要解决此问题,您需要了解您的哪些代码(或类路径中的 jar)在后台使用 C++,并确保及时 gc'd。

例如,如果您不调用 close,您可能会遇到同样的问题: https://docs.oracle.com/javase/7/docs/api/java/util/zip/GZIPInputStream.html#close()

【讨论】:

  • 是c++吗我还以为是c
  • C 没有范围解析运算符
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多