我已经创建了一个android应用程序,现在我想确保它永远不会超过16mb的堆使用量。
不幸的是,对于这个任务,我的设备的堆比最小的16MB大得多,它至少有32MB。
当我跟踪分配时,它只是不断地分配和分配,很少进行垃圾收集,这使得很难跟踪内存泄漏。
我试过使用各种探查器,但并不容易。
我更愿意在活动之间来回移动,只看到堆上下移动,这样就不会出现内存泄漏,但是由于垃圾收集被推迟到真正需要它时,这似乎很难做到。
在32MB堆大小的设备上,是否可以将堆大小限制为16MB以进行测试?

最佳答案

最好的方法是使用android虚拟设备,因为您可以在android模拟器中配置堆大小。它在创建AVD时位于高级选项中。
但是,如果必须在实际设备上测试,则可以通过在启动时创建堆内存的内存泄漏来模拟具有较小堆的情况。确保对分配的对象保留一个强引用,这样它就不会被垃圾回收。
在堆大小为32MB的设备上,如果在启动时创建16MB泄漏,则剩余的16MB堆空间将留给应用程序使用。

10-06 03:28