Jes*_*eke 3 enums android garbage-collection ddms
在我的应用程序中,我注意不要在主渲染循环中进行堆分配,以防止垃圾收集器不得不做它的事情.
在对我的应用程序进行一系列更改后,我突然看到垃圾收集器每隔一两秒被调用一次,并且每次调用时释放大约400k的内存.
我回顾一下我所做的更改,并且我没有在渲染线程上发生任何明确的分配.所以我运行ddms并使用"Allocation Tracker"工具,但没有发生任何分配,除了与运行ddms相关的正常分配.当然,没有为400k字节显示足够的分配,显然每秒钟都会收集垃圾
(我已经找到了解决方案,但我发布了问题+答案以获得其他好处)
事实证明,我能够跟踪问题,调用枚举类的.values()方法,该方法在每次调用时分配一个新数组.但由于某些原因,这些分配不会出现在ddms的分配跟踪器中,因此很难跟踪.
幸运的是,我能够使用git bisect找到引入该问题的具体更改,然后将其跟踪到该更改中的确切问题.
编辑:经过一些额外的测试后,似乎克隆数组通常不会出现在分配跟踪器中.
附加信息:在克隆对象时,这似乎是Honeycomb及以下的问题.它将在ICS中修复.(http://code.google.com/p/android/issues/detail?id=19831)
| 归档时间: |
|
| 查看次数: |
1050 次 |
| 最近记录: |