在我们正在开发的最近的“远程控制”应用程序中,由于#GREF在模拟器中超过2000,因此我们在意外崩溃中运行了几天。在真正的硬件上,它需要更长的时间但最终也会发生(我知道真实硬件上不存在2000的模拟器限制)。我研究了大部分SO主题与同一主题,但与我们的情况没有真正的相似之处。 UI并不复杂,基本上使用几个单独的屏幕进行设置,之后它在带有多个页面的TabView中工作。没什么好看的。
在最后一次崩溃中,我使用GREF的摘要捕获了调试日志。
03-25 20:29:22.184 D/dalvikvm( 1686): GREF has increased to 2001
03-25 20:29:22.184 W/dalvikvm( 1686): JNI global reference table (0xbb68f218) dump:
03-25 20:29:22.184 W/dalvikvm( 1686): Last 10 entries (of 2001):
03-25 20:29:22.184 W/dalvikvm( 1686): 2000: 0xb54e0f20 java.lang.Class<mono.java.lang.RunnableImplementor>
03-25 20:29:22.184 W/dalvikvm( 1686): 1999: 0xb5652570 java.lang.NoClassDefFoundError
03-25 20:29:22.184 W/dalvikvm( 1686): 1998: 0xb5652af8 mono.java.lang.RunnableImplementor
03-25 20:29:22.184 W/dalvikvm( 1686): 1997: 0xb5652ce0 java.lang.NoClassDefFoundError
03-25 20:29:22.184 W/dalvikvm( 1686): 1996: 0xb56539e8 mono.java.lang.RunnableImplementor
03-25 20:29:22.194 W/dalvikvm( 1686): 1995: 0xb5653460 java.lang.NoClassDefFoundError
03-25 20:29:22.194 W/dalvikvm( 1686): 1994: 0xb56537e8 mono.java.lang.RunnableImplementor
03-25 20:29:22.194 W/dalvikvm( 1686): 1993: 0xb5653bb8 java.lang.NoClassDefFoundError
03-25 20:29:22.194 W/dalvikvm( 1686): 1992: 0xb5654358 mono.java.lang.RunnableImplementor
03-25 20:29:22.194 W/dalvikvm( 1686): 1991: 0xb5654338 java.lang.NoClassDefFoundError
03-25 20:29:22.194 W/dalvikvm( 1686): Summary:
03-25 20:29:22.194 W/dalvikvm( 1686): 318 of java.lang.Class (166 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 20 of android.w03-25 20:29:22.194 W/dalvikvm( 1686): 18 of java.lang.String (18 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 440 of java.lang.NoClassDefFoundError (440 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of java.lang.Boolean
03-25 20:29:22.194 W/dalvikvm( 1686): 13 of java.lang.Integer (13 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of java.io.File
03-25 20:29:22.194 W/dalvikvm( 1686): 49 of java.lang.ref.WeakReference (49 unique instances)
03-25 20:29:22.194 W/da03-25 20:29:22.194 W/dalvikvm( 1686): 1 of dalvik.system.PathClassLoader
03-25 20:29:22.194 W/dalvikvm( 1686): 7 of android.graphics.Bitmap (7 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of android.app.ActivityThread$ApplicationThread
03-25 20:29:22.194 W/dalvikvm( 1686): 2 of android.os.Handler (2 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of android.content.ContentProvider$Transport
03-25 20:29:22.194 W/dalvikvm( 1686): 20 of android.content.Intent (20 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 29 of android.widget.EditText (29 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 15 of android.content.res.XmlBlock$Parser (15 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of android.database.ContentObserver$Transport
03-25 20:29:22.194 W/dalvikvm( 1686): 225 of android.widget.TextView (225 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 13 of android.os.Bundle (13 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of android.os.Looper
03-25 20:29:22.194 W/dalvikvm( 1686): 2 of org.apache.harmony.xnet.provider.jsse.TrustManagerImpl (1 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 29 of android.text.SpannableStringBuilder (29 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 5 of android.view.ViewRootImpl$InputMethodCallback (5 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 1 of android.view.accessibility.AccessibilityManager$1
The program 'Mono' has exited with code 0 (0x0).
03-25 20:29:22.194 W/dalvikvm( 1686): 15 of android.view.ViewRootImpl$W (15 unique instances)
03-25 20:29:22.194 W/dalvikvm( 1686): 8 of android.widget.CheckBox (8 unique instances)
让我印象深刻的是'java.lang.NoClassDefFoundError'实例(440)。我怀疑日志不完整,因为另一个明显的高流媒体'mono.java.lang.RunnableImplementor'不在列表中。第二个观察结果是在顶部运行GREF并使应用程序崩溃的两个交替实例的序列。
问题:任何可能导致这两个GREF实例丰富的想法?它们是什么意思和创造它们的原因(这可能导致我找到崩溃的根本原因)。
Thx!