【问题标题】:JAVA pointer being freed was not allocated被释放的 JAVA 指针未被分配
【发布时间】:2017-10-10 07:17:26
【问题描述】:

我正在开发一个 java 项目(本质上是算法),在运行几个问题对象后通过 CSV 文件运行该项目,它因以下错误而中断。

java(7606,0x70000fc31000) malloc: 对象 0x7ffb84747ac8 错误:未分配被释放的指针 在 malloc_error_break 中设置断点进行调试

操作系统- Mac
在 java 版本 1.7 和 1.8 上试过, 内存 -Xms4G -Xmx4G

【问题讨论】:

  • 你使用原生库吗?
  • 您是否“在 malloc_error_break 中设置断点进行调试”?
  • Atiq,如果你能分享资源,那就太好了。这样,就有可能重现该问题。如果没有,您可以按照错误消息中的建议进行操作。看看我的回答,感受一下你必须采取什么样的步骤才能在 gdb 中正确运行 JVM 并在本机代码中设置断点。
  • 这是生产代码,不能共享。

标签: java eclipse macos java-8 java-7


【解决方案1】:

您始终可以按照错误消息并尝试在 gdb 中重现错误。这样,您就可以确定问题的根源。如果您有 JVM 的崩溃日志、核心文件,这也将有助于您调查问题的根源。

看这里:

JNI debugging – extreme way, or what your iPad mini and ssh sessions can do for you

您要做的是以调试模式启动代码,运行 gdb,附加到 JVM 并设置断点,如错误消息中所述。

然后,一旦断点被​​命中,您可以查看 JVM 内部的回溯,并查看问题在 Java 代码中发生的位置。对我来说,这似乎是 JVM 安装相关问题或本机代码问题。

您也可以在这里查看,了解如何使用 IntelliJ 调试混合的 Java/C 代码(在您的情况下,您将调试整个 JVM):

recipeNoD002 - Debugging JNI code with IntelliJ/CLion

【讨论】:

    猜你喜欢
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多