小编kab*_*002的帖子

试图追查gref泄漏

我有一个问题,一个应用程序在运行大约10分钟后可靠地崩溃,我正在尝试追踪崩溃的来源.

logcat似乎表明崩溃是由于基于以下行的grefs泄漏造成的.

09-14 23:36:48.055 12383 12409我monodroid-gc:46080杰出的GREF.>执行完整的GC!

此行之后是重复GC活动的狂热,直到活动管理器终止应用程序,如下一行中所示.

"08-23 11:10:14.393 880 894 I ActivityManager:Killing> 1909:WheelchairQuickCollect.WheelchairQuickCollect/u0a220(adj 0):用户请求>错误后"(注意这一行来自早期的日志 - 我只是把它放在手边)

我尝试通过以下adb命令启用gref日志记录(如https://developer.xamarin.com/guides/android/troubleshooting/troubleshooting/所示)

"adb shell setprop debug.mono.log gref,gc"

但是我有两个日志问题

1)日志条目似乎不包含任何有用信息,下面是gref日志的示例.请注意,grefs指向的对象上没有任何堆栈跟踪或类型信息,如Xamarin网站上的故障排除示例所示.

2)启用gref日志会导致我的应用程序的主ui冻结.我已多次复制此行为,但未能弄清楚为什么会这样.我在ide中没有任何未被捕获的例外,只是冻结屏幕,然后活动经理强制完成我的主要活动

(09-14 23:45:30.742 883 909 W ActivityManager:强制完成活动> WheelchairQuickCollect.WheelchairQuickCollect/md580d5d820f0b3cedc88e4799f6dbbf8c> 5.MainActivity)

任何人都有任何关于我如何识别锁定UI线程的建议?

还有任何关于如何确定使用所有grefs的内容的想法将不胜感激.甚至.net运行时的类型信息或由这些引用链接的java对象也是一个好的开始.


09-14 23:45:30.389 13759 14047 I monodroid-gref: +w+ grefc 1082 gwrefc 4 obj-handle 0x1018c6/G -> new-handle 0x2002d7/W from thread 'finalizer'(14047)

09-14 23:45:30.390 13759 14047 I monodroid-gref: +w+ grefc 1075 gwrefc 11 obj-handle 0x18ea/G -> new-handle 0x2f3/W from thread 'finalizer'(14047)

09-14 23:45:30.390 13759 14047 …
Run Code Online (Sandbox Code Playgroud)

android memory-leaks xamarin.android xamarin

7
推荐指数
1
解决办法
488
查看次数

标签 统计

android ×1

memory-leaks ×1

xamarin ×1

xamarin.android ×1