2

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

E/dalvikvm(28069):JNI 错误(应用程序错误):NULL 指针的非零容量:80000

4

1 回答 1

6

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

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

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

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

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

于 2013-09-05T15:29:55.987 回答