【问题标题】:Increase Android Emulator GREF增加Android模拟器GREF
【发布时间】:2017-12-14 06:20:16
【问题描述】:

当我在模拟器上运行我的 Xamarin.Android 应用程序时,当 GREF 增加到 2001 时它会崩溃:

07-10 13:08:12.113 D/dalvikvm( 2154): GREF has increased to 2001
07-10 13:08:12.113 W/dalvikvm( 2154): JNI global reference table (0xb9059ae0) dump:
07-10 13:08:12.113 W/dalvikvm( 2154):   Last 10 entries (of 2001):
07-10 13:08:12.113 W/dalvikvm( 2154):      2000: 0xab294a58 android.widget.RelativeLayout$LayoutParams
07-10 13:08:12.113 W/dalvikvm( 2154):      1999: 0xab2949f8 mono.android.view.View_OnClickListenerImplementor
07-10 13:08:12.113 W/dalvikvm( 2154):      1998: 0xab294828 android.widget.RelativeLayout$LayoutParams
07-10 13:08:12.113 W/dalvikvm( 2154):      1997: 0xab294458 android.widget.ImageView
07-10 13:08:12.113 W/dalvikvm( 2154):      1996: 0xab294320 android.widget.RelativeLayout$LayoutParams
07-10 13:08:12.113 W/dalvikvm( 2154):      1995: 0xab2942c0 mono.android.view.View_OnClickListenerImplementor
07-10 13:08:12.113 W/dalvikvm( 2154):      1994: 0xab293cc8 android.widget.TextView
07-10 13:08:12.113 W/dalvikvm( 2154):      1993: 0xab293658 android.widget.RelativeLayout
07-10 13:08:12.113 W/dalvikvm( 2154):      1992: 0xab290998 android.widget.RelativeLayout$LayoutParams
07-10 13:08:12.113 W/dalvikvm( 2154):      1991: 0xab290860 android.widget.RelativeLayout$LayoutParams
07-10 13:08:12.113 W/dalvikvm( 2154):   Summary:

在 Android 设备上运行良好。 有没有办法在模拟器上的 Android 应用崩溃之前摆脱 GREF 或增加 GREF 数量?

谢谢。

【问题讨论】:

    标签: android xamarin xamarin.android android-emulator


    【解决方案1】:

    我还没有对您看到的行为进行全面分析 - 如果没有完整的代码示例,很难做到。

    绑定列表的一般情况是 GREF 递增:

    • 每个 ListView 项目一次 - 因为它在列表中使用
    • 对于 ListView 中具有边界的每个 View 对象执行一次 财产或事件 - 例如如果您绑定到 TextView 和 每个 ListView 项内的按钮,然后 C# 将存储引用 对这些观点

    您可以参考此链接获取帮助

    https://forums.xamarin.com/discussion/568/when-to-release-dispose-java-objects-jni-gref-question#latest

    【讨论】:

      【解决方案2】:

      模拟器的 GREF 数量有限。计数约为 2000。 您已达到该限制。您最好的做法是在实际设备上进行测试,因为它们的 GREF 计数要高得多 (~52000)。

      虽然没有很好的方法来增加它,但您可以尝试以下属性:

      adb shell setprop debug.mono.max_grefc <integer value>

      https://developer.xamarin.com/guides/android/advanced_topics/environment/#debug.mono.maxgrefc

      但是我关于在设备上运行的建议是这里的理想情况。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-15
        • 2010-10-23
        • 1970-01-01
        相关资源
        最近更新 更多