我已经创建了一个Android应用程序,现在我想确保它不会超过16MB的堆使用量。
不幸的是,对于此任务,我的设备的堆比最小的16MB大得多,至少有32MB。
当我跟踪分配时,它只会继续分配,并且很少进行垃圾收集,这使得很难跟踪内存泄漏。
我尝试使用各种分析器,但这并不容易。
最好是我想在活动之间来回切换,只是看到堆先升后降,这样就不会发生内存泄漏,但是由于垃圾回收被推迟到了真正需要的时候,这似乎很难做到。
是否可以将32MB堆大小的设备上的堆大小限制为16MB以进行测试?
最好的方法是使用Android虚拟设备,因为您可以在Android仿真器中配置堆大小。创建AVD时,它位于高级选项中。
但是,如果必须在真实设备上进行测试,则可以通过在启动时创建堆内存的内存泄漏来模拟具有较小的堆。确保对分配的对象保持强烈的引用,这样它就不会被垃圾回收。
在具有32MB堆大小的设备上,如果在启动时创建了16MB的泄漏,则将剩下的16MB堆空间留给应用程序使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句