- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的应用程序正在生成巨大的 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/
在我们对延迟敏感的应用程序中,我们有缓存数据(驻留在 TG 中)和在 YG 中消亡的短暂对象。我已经看到次要 GC 时间和主要 GC 时间有显着差异。我怀疑这与TG的尺寸相对较大有关。谁能解释 GC
我看到了多个建议运行 GC.Collect(GC.MaxGeneration) 的答案。 既然方法GC.Collect()会收集所有存在的分代,那么两者有什么区别吗? 也许如果只有两代而不是三代,GC
我们正在使用 UseParallelGC。 GC 日志看起来像 2016-06-09T19:38:17.362+0000:655312.397:[完整GC(人体工程学)[PSYoungGen:2291
我最近看到了两个非常好的和有教育意义的语言讲座: This first one由 Herb Sutter 撰写,介绍了 C++0x 的所有漂亮和酷炫的特性,为什么 C++ 的 future 似乎比以往
我们正在运行 gerrit 2.10.7,我们偶尔会遇到损坏的对象没有被 gerrit gc 修复的问题,即使 git gc 可以很好地修复它们。 另一方面,我读到 gerrit gc 会创建优化其他
我试图避免 Full GC(来自下面的 gc.log 示例)在生产中的 Tomcat 中运行 Grails 应用程序。关于如何更好地配置 GC 有什么建议吗? 14359.317:[完整 GC 143
我试图通过在析构函数中使用 console.WriteLine() 来确保释放某个类的实例,但输出从未出现。 我仔细搜索了任何挥之不去的引用资料以及事件订阅,但没有找到。只是为了我自己的理智,在我继续
之前看过一篇文章,说FGC影响时序,导致application出错结果。 代码示例如下: long start = System.currentTimeInMillis(); doSomething(
在 Java 中,我们可以使用 System.gc() 方法来建议 GC。今天我从this link开始了解C#中的GC.Collect()方法。 . 但我对解释有些不清楚。 第一行。 Forces
我理解 Python GC 有两种工作方式: 1) 基本引用计数 - 当“name”设置为“Tom”时,“John”下方的引用计数为零 name = "John" name = "Tom" (Refe
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
今天我们使用并发标记清除,具体如下: -XX:+UseConcMarkSweepGC 我看到一些文章推荐使用这种形式的附加参数: -XX:+UseConcMarkSweepGC -XX:+CMSInc
当我运行我的程序时,logcat 显示很多 GC Activity 喜欢 GC freed 10324 objects/ 510376 bytes in 103 ms GC freed 10324 o
2013-11-26T10:19:30.011+0800: [GC [ParNew: 2432484K->19997K(2696640K), 0.0378270 secs] 5560240K->315
在执行 GC 时,JVM 会遍历 Activity 对象,并清除未标记的对象。 根据: How to Tune Java Garbage Collection “Full GC的执行时间相对Minor
我有一个分布式缓存应用程序(内存绑定(bind),由于与集群中其他节点的交互而具有网络 I/O)在 JVM 1.7.0_51 中运行,带有 G1 垃圾收集器。这是 JVM 配置: -server -X
首先,我想让您知道,这是一个理论问题而不是实际问题,我只是好奇弱引用对象是如何被释放的。让我们快速记住 Java 中的弱引用是什么。粗略地说WeakReference意味着当没有指向“我”的强引用时,
这是运行大约 10 分钟后的输出。 Heap PSYoungGen total 7040K, used 0K [0x24060000, 0x247c0000, 0x26790000)
我正在运行一个应用程序,在 Weblogic 上使用 java 5 和 CMS 垃圾收集器。在垃圾收集日志中,我看到了消息日志,其中大部分消息我可以使用 Sun 的 Java HotSpot 虚拟机中
我有一个 ConcurrentMap> map = new ConcurrentHashMap>(); 并且希望当 SoftReference 的引用被 GC 时从映射中删除键/值对。 我该如何实现这
我是一名优秀的程序员,十分优秀!