我在 LibGdx 中遇到了一个新错误,上面写着 Null Pointer 的非零容量!这个错误是什么意思?
E/dalvikvm(28069):JNI 错误(应用程序错误):NULL 指针的非零容量:80000
我在 LibGdx 中遇到了一个新错误,上面写着 Null Pointer 的非零容量!这个错误是什么意思?
E/dalvikvm(28069):JNI 错误(应用程序错误):NULL 指针的非零容量:80000
错误来自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 日志的回溯,它可能有助于查明此特定错误的来源。这对于修复OutOfMemoryError
bug 很方便(它可能在 Libgdx 或 box2d 中,或者在 Android 使用的任何本机库中,如果没有更多细节就不可能说)。但是,问题的真正根源是您的内存泄漏。使用 Eclipse DDMS 堆跟踪工具找出问题的根源。