最好的方法知道何时释放应用程序中的内存

时间:2014-06-06 15:20:26

标签: java android arrays memory memory-management

好的,所以我有一个适用于多个大型数据结构的应用程序;为了提高性能,这些将过度分配数组大小,并保留清除空格,以确保在添加新项目时它可以快速扩展,即 - 它避免了必须尽可能多地创建新数组。

但是,如果设备内存不足,这可能会有点浪费。为了解释这一点,我目前有一些健全性检查,如果自上次更改阵列大小以来在一定时间内未使用的空间量超过一定量,将缩小数组,但这似乎有点笨重的事情要做,因为我不知道这个空间是否真的需要被释放。

我想知道的是,如果我有一个告诉我的对象回收空间的方法,有什么方法可以检测我的应用程序什么时候应该释放一些内存(例如 - 内存很低和/或垃圾集合即将变得更具侵略性),以便我可以缩小我的数据结构?我问,因为很明显有些设备根本没有内存限制,所以如果我的应用程序为了速度而对它们有点浪费,那么它可能会非常重要,同时其他设备也可以获得尽可能多的免费尽可能使用空格,但我目前的方法以完全相同的方式处理这两种情况。

1 个答案:

答案 0 :(得分:1)

  

有没有一种方法可以检测我的应用程序何时应该释放一些内存(例如 - 内存不足和/或垃圾收集即将变得更具攻击性),这样我可以缩小我的数据结构?

覆盖相关课程implementing ComponentCallbacks2中的onTrimMemory()(例如,您的活动)。特别是,像TRIM_MEMORY_BACKGROUNDTRIM_MEMORY_MODERATETRIM_MEMORY_COMPLETE这样的州可能会成为“紧缩腰带”的候选时间。从记忆消费的角度来看。