我创建了一个Android应用程序,现在我想确保它永远不会超过16MB的堆使用量。
不幸的是,对于这个任务,我的设备有一个比最小16MB大得多的堆,它至少有32MB。
当我跟踪分配时,它只是分配和分配,很少垃圾收集,这使得很难追踪内存泄漏。
我尝试使用各种分析器,但这并不容易。
我希望在活动之间来回反复只看到堆上升然后退回以便没有内存泄漏,但由于垃圾收集被推迟到真正需要它,这似乎很难做到。 / p>
是否可以在32MB堆大小的设备上将堆大小限制为16MB以进行测试?
答案 0 :(得分:2)
执行此操作的最佳方法是使用Android虚拟设备,因为您可以在Android模拟器中配置堆大小。创建AVD时,它位于高级选项中。
但是,如果必须在真实设备上对此进行测试,则可以通过在启动时创建堆内存的内存泄漏来模拟具有较小堆。确保对所分配的对象保持强引用,这样就不会收集垃圾。
在堆大小为32MB的设备上,如果在启动时创建16MB的泄漏,则会留下剩余的16MB堆空间供应用程序使用。