java-native-interface - LibGDX : JNI ERROR (app bug): non-zero capacity for NULL pointer: 80000 错误

标签 java-native-interface libgdx dalvik

我在 LibGdx 中遇到了一个新错误,它说 Null Pointer 的容量为非零!这个错误是什么意思?

E/dalvikvm(28069): JNI ERROR (app bug): non-zero capacity for NULL pointer: 80000

最佳答案

错误来自 NewDirectByteBuffer 的第 2725 行(此副本的)Jni.cpp:https://android.googlesource.com/platform/dalvik/+/3a7af00/vm/Jni.cpp

一些 native 代码正在尝试初始化 NIO DirectByteBuffer,并传入初始大小 80,000 和 NULL 指针。由于这没有意义(指针应该是非 NULL),因此抛出异常。该指针很可能为 NULL,因为 80,000 字节的分配失败,很可能是因为您的应用内存不足,或者因为内存变得如此碎片化,80k 无法连续使用。

从技术上讲,调用者的代码中有一个小错误。它可能应该抛出更直接的 OutOfMemoryError,但想法和最终结果是相同的。

由于 80k 不是很大,统计上可能的情况是内存泄漏(很可能就是这个对象)。

如果您有来自 dalvik 日志的回溯,它可能有助于查明此特定错误的来源。这对于修复 OutOfMemoryError 错误很方便(它可能在 Libgdx 中,或在 box2d 中,或在 Android 使用的任何 native 库中,没有更多细节就不可能说)。但是,问题的真正根源是您的内存泄漏。使用 Eclipse DDMS 堆跟踪工具找出问题的根源。

关于java-native-interface - LibGDX : JNI ERROR (app bug): non-zero capacity for NULL pointer: 80000 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18629871/

相关文章:

Android ndk 嵌套模块

android - 为什么有些 Android 手机会导致我们的应用抛出 java.lang.UnsatisfiedLinkError?

java - 剪耳三角器崩溃

java - 如何在Android Activity中调用Jni对象?

java - Android:在运行时多次检查另一个类的方法

java - LibGDX 不使用 Android Assets 文件夹

java - 垃圾收集器并清空 onDestroy 中的引用

Android:如何 fork 一个新进程

java - 为什么我的应用程序内存不足?

java - 将 C++ 项目导出到 Android - JNI/JavaCPP/Visualgdb