![]() |
1
4
不管这些异常是否被抛出,在内存使用方面,这个细节都是非常不相关的。 虽然您希望在堆转储中看到谁持有引用,但出于某种原因,您无法做到这一点。我想知道本地代码是否可以在堆转储工具中正确地进行符号化? 不管怎样,作为一种新的尝试,我建议不要调试这些异常的位置。 投掷 但是他们在哪里 创建 . 在类和/或其所有构造函数上放置断点。理想情况下,您只需要从堆转储引用中获取这些信息,但是如果您能够看到谁在重复构造这些对象,那么它仍然可以提供信息……我猜他们来自同一个地方。 |
![]() |
2
1
如果使用Eclipse,则可以在
每当抛出所选类型的异常时,这些断点暂停执行。 一旦发现抛出如此多异常的条件,就可以修复这个bug。 不完全是调试未引用异常填充堆的原因,但我希望它能有所帮助。 |
![]() |
3
1
我不熟悉OQL,特别是Android平台,或者在那个平台上的Java GC的内部操作,但是对我来说最明显的是缺失。
你试过把这个库换成 the JDK one ?如果可能的话,看起来应该很容易。
然后我就开始压缩堆中的所有东西。GC特征可以提供线索。是否存在以某种方式转义集合的实例?每秒创建多少个?每次GC通过的陈旧的部分是多少,或者它是一个常量?他们是不是像丹尼所说的那样在一个繁忙的循环中被创造出来的?如果你打电话怎么办
但是的,这就是我开始打印调试的地方。希望有更好的解决方案。-P |