Android - 出于测试目的将堆大小限制为 16MB?
Android - limit heap size to 16MB for testing purposes?
我已经创建了一个 Android 应用程序,现在我想确保它不会超过 16MB 的堆使用量。
不幸的是,对于此任务,我的设备的堆比最小值 16MB 大得多,它至少有 32MB。
当我跟踪分配时,它只是不断地分配和分配,很少收集垃圾,这使得很难跟踪内存泄漏。
我尝试过使用各种分析器,但这并不容易。
最好我想在活动之间来回切换,只看到堆上升然后下降,这样就没有内存泄漏,但是由于垃圾收集被推迟到真正需要它时,这似乎很难做到.
是否可以出于测试目的在 32MB 堆大小的设备上将堆大小限制为 16MB?
最好的方法是使用 Android 虚拟设备,因为您可以在 Android 模拟器中配置堆大小。创建AVD时在高级选项里
但是,如果您必须在真实设备上对此进行测试,您可以通过在启动时创建堆内存的内存泄漏来模拟具有较小的堆。确保你对你分配的对象保持强引用,这样它就不会被垃圾回收。
在具有 32MB 堆大小的设备上,如果您在启动时创建 16MB 泄漏,这将为您的应用程序留下剩余的 16MB 堆space。
我已经创建了一个 Android 应用程序,现在我想确保它不会超过 16MB 的堆使用量。
不幸的是,对于此任务,我的设备的堆比最小值 16MB 大得多,它至少有 32MB。
当我跟踪分配时,它只是不断地分配和分配,很少收集垃圾,这使得很难跟踪内存泄漏。
我尝试过使用各种分析器,但这并不容易。
最好我想在活动之间来回切换,只看到堆上升然后下降,这样就没有内存泄漏,但是由于垃圾收集被推迟到真正需要它时,这似乎很难做到.
是否可以出于测试目的在 32MB 堆大小的设备上将堆大小限制为 16MB?
最好的方法是使用 Android 虚拟设备,因为您可以在 Android 模拟器中配置堆大小。创建AVD时在高级选项里
但是,如果您必须在真实设备上对此进行测试,您可以通过在启动时创建堆内存的内存泄漏来模拟具有较小的堆。确保你对你分配的对象保持强引用,这样它就不会被垃圾回收。
在具有 32MB 堆大小的设备上,如果您在启动时创建 16MB 泄漏,这将为您的应用程序留下剩余的 16MB 堆space。