因此,Android 面临的挑战之一是各种设备规范(尤其是设备内存)。
我编写的模型对象以延迟加载的方式广泛使用 Java SoftReferences
,因此 VM 可以根据需要随意修剪数据模型中当前未使用的部分,并且它们是只是根据需要重组。
但是,SoftReferences
实践中的一个挑战是,它们往往会在成为弱引用后的几秒钟内被清除,而不是一直停留到 VM 内存不足,因此它们运行良好在允许模型修剪方面,但它们效果不佳,因为它通常意味着内存中没有任何内容。理想情况下,在具有充足内存的设备上,您可以让用户受益于将对象保存在内存中。
因此,通常将 SoftReferences
与 LRU 机制结合使用,其中 LRU 保留指向最近引用对象的硬指针。这当然不是理想的,因为它假设您有足够的内存来存储所有这些几乎不被引用的对象。
这也让了解什么是 LRU 的良好默认值成为一个挑战。
在一个完美的世界中,Android 会使用它的低内存回调作为提示(所以我可能会从一个小的 LRU 开始,并定期提高它直到低内存回调开始发生,然后将其退回到 find 对设备来说是一个很好的值(value)),但根据我的经验,这个回调似乎永远不会与实际的 VM 内存压力重合。
有没有人遇到过一种合理的方法来检测您的数据模型在特定设备上使用了过多的内存?
最佳答案
如果你想确定 android 中的可用内存,那么你可以检查或转到 透视->ddms 2)第二件事是你可以使用内存分析器工具检查已用和未用内存,你也检查 内存的可用性。
关于java - 确定 Android 上的可用内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12477983/