gpt4 book ai didi

android - Xamarin.Android - GC 停止我的应用程序 2 秒

转载 作者:太空狗 更新时间:2023-10-29 15:02:47 26 4
gpt4 key购买 nike

我的应用程序正在生成巨大的 GC

GC_BRIDGE waiting for bridge processing to finish
GC_EXPLICIT freed 83K, 13% free 20422K/23303K, paused 3ms+6ms
GC_BRIDGE num-objects 8 num_hash_entries 192655 sccs size 182398 init 0.00ms df1 618.66ms sort 668.89ms dfs2 267.17ms setup-cb 92.16ms free-data 219.17ms user-cb 44.89ms clenanup 0.14ms links 15526347/15526347/159040609/136 dfs passes 28251143/27524490
GC_MINOR: (Nursery full) pause 643.96ms, total 644.45ms, bridge 1292.70ms promoted 0K major 33344K los 108818K

我的应用程序使用 OpenGL,并使用 GameLoop 运行。在我使用 Android GUI 之前,我没有注意到任何大的 GC。

我怀疑我在 Android GUI 中的一些代码写得不好。我已经阅读了一些非常奇怪(并且不是真正可以理解的)指南,例如 this documentation (参见 HiddenReference 部分)。

当然,我不会在这里发送我的全部源代码。我只想学习如何调查。

我的问题是:

上面的信息是否提供了有趣/有用的信息? (怎么读)

GC_BRIDGE 和 GC_MINOR 以及它们的值是什么意思/如何理解?

最佳答案

所有这些信息都可以帮助您了解您的应用及其内存消耗情况。

根据您的操作,这可能不是问题。例如,当您分配高分辨率位图时,您会看到内存增加。但是您的应用程序很可能会发生内存泄漏。

在 Android 上很难跟踪它们,因为 HeapShot 工具不存在(带有 Xamarin Studio 的 iOS 可用)。此工具可帮助您跟踪哪些对象保留在内存中。

有一种方法可以在 Activity 基础上仔细检查是否存在泄漏。将 GC.Collect() 放在您可以在应用程序中轻松触发的特定函数上。

完成此操作后,打开第一个 Activity (主要 Activity )并注意内存使用情况。打开另一个回到上一个并触发 GC.Collect。注意内存使用情况。多次执行该过程,如果内存持续增长,则表明您的应用程序存在泄漏。


大多数 GC 消息都有深入的描述 on this website .

对于托儿所完整 read the Android Lead - Jonathan Pryor's answer .

你也可以 read this thread about GC_Bridge我从未在我的应用程序中看到自己。

关于android - Xamarin.Android - GC 停止我的应用程序 2 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24783967/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com