Xamarin.android MvvmCross Xamarin机器人因GREF而坠毁>;2000

Xamarin.android MvvmCross Xamarin机器人因GREF而坠毁>;2000,xamarin.android,xamarin,mvvmcross,Xamarin.android,Xamarin,Mvvmcross,在我们正在开发的一款最新“远程控制”应用程序中,由于模拟器中的#GREFs超过2000,我们在几天之后出现了意外的崩溃。在真正的硬件上,这需要更长的时间,但最终也会发生(我知道模拟器限制2000在真正的硬件上并不存在)。我已经研究了大多数关于同一主题的SO主题,但与我们的情况没有真正的相似之处。UI并没有那个么复杂,基本上使用几个单独的屏幕进行设置,然后在一个有很多页面的选项卡视图中工作。没什么特别的 在上一次崩溃中,我捕获了带有GREFs摘要的调试日志 03-25 20:29:22.1

在我们正在开发的一款最新“远程控制”应用程序中,由于模拟器中的#GREFs超过2000,我们在几天之后出现了意外的崩溃。在真正的硬件上,这需要更长的时间,但最终也会发生(我知道模拟器限制2000在真正的硬件上并不存在)。我已经研究了大多数关于同一主题的SO主题,但与我们的情况没有真正的相似之处。UI并没有那个么复杂,基本上使用几个单独的屏幕进行设置,然后在一个有很多页面的选项卡视图中工作。没什么特别的

在上一次崩溃中,我捕获了带有GREFs摘要的调试日志

    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)
03-25 20:29:22.184d/dalvikvm(1686):GREF增加到2001年
03-25 20:29:22.184 W/dalvikvm(1686):JNI全局参考表(0xbb68f218)转储:
03-25 20:29:22.184 W/dalvikvm(1686):最后10个条目(2001年起):
03-25 20:29:22.184 W/dalvikvm(1686):2000:0xb54e0f20 java.lang.Class
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:0xb565458 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):总结:
03-25 20:29:22.194 W/dalvikvm(1686):318个java.lang.Class(166个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):android的20.w03-25 20:29:22.194 W/dalvikvm(1686):java.lang.String的18个(18个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):440个java.lang.NoClassDefFoundError(440个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):java.lang.Boolean的1
03-25 20:29:22.194 W/dalvikvm(1686):13个java.lang.Integer(13个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):java.io.File的1
03-25 20:29:22.194 W/dalvikvm(1686):java.lang.ref.WeakReference的49个(49个唯一实例)
03-25 20:29:22.194 W/da03-25 20:29:22.194 W/dalvikvm(1686):dalvik.system.PathClassLoader的1个
03-25 20:29:22.194 W/dalvikvm(1686):android.graphics.Bitmap的7个(7个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):android.app.ActivityThread$ApplicationThread的1个
03-25 20:29:22.194 W/dalvikvm(1686):2个android.os.Handler(2个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):android.content.ContentProvider$Transport的1个
03-25 20:29:22.194 W/dalvikvm(1686):20个android.content.Intent(20个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):29个android.widget.EditText(29个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):android.content.res.XmlBlock$Parser的15个实例(15个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):安卓系统的1个数据库ContentObserver$Transport
03-25 20:29:22.194 W/dalvikvm(1686):android.widget.TextView的225个(225个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):13个android.os.Bundle(13个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):android.os.Looper的1个
03-25 20:29:22.194 W/dalvikvm(1686):org.apache.harmony.xnet.provider.jsse.TrustManagerImpl的2个(1个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):android.text.SpannableStringBuilder的29个实例(29个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):5个android.view.ViewRootImpl$InputMethodCallback(5个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):安卓1.view.accessibility.AccessibilityManager$1
程序“Mono”已退出,代码为0(0x0)。
03-25 20:29:22.194 W/dalvikvm(1686):15个android.view.ViewRootImpl$W(15个唯一实例)
03-25 20:29:22.194 W/dalvikvm(1686):8个android.widget.CheckBox(8个唯一实例)
让我印象深刻的是大量的“java.lang.NoClassDefFoundError”实例(440)。我怀疑日志不完整,因为另一个明显的高层“mono.java.lang.RunnableImplementor”不在列表中。第二个观察是这两个交替的实例在顶部运行GREFs并使应用程序崩溃的顺序

问题:你知道是什么导致了这两个GREF实例的大量出现吗?它们是什么意思,是什么造成了它们(这可能会让我找到崩溃的根本原因)


谢谢

我在Mvx中见过的唯一真正的问题是格雷夫。也许值得尝试找出你的应用程序的哪一部分泄漏了GREFs,并将其作为一个更简单的可复制样本——这样就更容易找出泄漏的原因并加以堵塞。同样值得用
Xamarin
和/或
MonoDroid
来标记这样的问题,因为这会引起Xamarin运行时忍者的注意,他们可以帮助调试和记录tips.Thx。我注意到了这篇文章,但无法立即链接。我在TabView中使用时间选择器,似乎问题是在激活/绑定到关联的viewmodel后开始的。这会导致类似的问题吗?我将做一个删除绑定/视图模型的实验,看看这个问题是否消失了我在MvxDatePicker或MvxTimePicker中看不到太多,但我可以相信任何事情。此刻,可悲的是