我的 LibGDX Android 游戏在加载过程中随机崩溃。我想这与 Android 由于主线程中长时间运行的任务或内存问题而杀死我的应用程序有关。
在这方面,我想了解日志中这些行的含义:
03-12 10:00:18.444 5522 5540 W com.asdfasdf: JNI critical lock held for 38.485ms on Thread[13,tid=5540,Runnable,Thread*=0x9d711000,peer=0xa3e40000,"GLThread 248"]
03-12 10:00:18.498 5522 5540 W com.asdfasdf: JNI critical lock held for 18.423ms on Thread[13,tid=5540,Runnable,Thread*=0x9d711000,peer=0xa3e40000,"GLThread 248"]
03-12 10:00:20.236 5522 5540 W com.asdfasdf: JNI critical lock held for 136.530ms on Thread[13,tid=5540,Runnable,Thread*=0x9d711000,peer=0xa3e40000,"GLThread 248"]
03-12 10:00:20.321 5522 5540 W com.asdfasdf: JNI critical lock held for 59.744ms on Thread[13,tid=5540,Runnable,Thread*=0x9d711000,peer=0xa3e40000,"GLThread 248"]
03-12 10:00:20.700 5522 5540 W com.asdfasdf: JNI critical lock held for 49.684ms on Thread[13,tid=5540,Runnable,Thread*=0x9d711000,peer=0xa3e40000,"GLThread 248"]
我在这个话题上找不到太多。日志行被归类为警告,但我不太确定他们想告诉我什么。
然后游戏以这些行结束并为我提供墓碑(欢呼..):
03-12 10:00:27.631 5522 5532 F libc : Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 5532 (FinalizerDaemon), pid 5522 (com.asdfasdfe)
03-12 10:00:27.839 5618 5618 F DEBUG : pid: 5522, tid: 5532, name: FinalizerDaemon >>> com.asdfasdfe <<<
03-12 10:00:28.769 1944 5625 W ActivityManager: Force finishing activity com.asdfasdfe/.AndroidLauncher
03-12 10:00:28.809 1944 2026 W InputDispatcher: channel '5f19156 com.asdfasdfe/com.asdfasdfe.AndroidLauncher (server)' ~ Consumer closed input channel or an error occurred. events=0x9
03-12 10:00:28.810 1944 2026 E InputDispatcher: channel '5f19156 com.asdfasdfe/com.asdfasdfe.AndroidLauncher (server)' ~ Channel is unrecoverably broken and will be disposed!
最佳答案
您的一个内部库中有一个内存密集型操作。跟踪以查找哪个库正在使用内存进行读/写操作或后台任务。要解决此问题,您可能需要增加缓冲区并添加一些检查以防止内存分配过多。
关于java - 游戏加载时崩溃 : Understanding of "JNI critical lock held for ...",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55117940/