java - 确定 Android 上的可用内存

标签 java android memory-management android-ndk

因此,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/

相关文章:

java apache poi(第 1 部分)

java - 在 Android 中从 FCM 获取自定义负载

android - 手势检测和 ScrollView 问题

java - 检测 JScrollPane 中的 JTable 何时滚动到底部附近

java - Asynctask类中的静态变量用还是反对?

java - 为什么我的多线程执行是单线程模式

java - 用于查找两点之间路径的 SQL 查询

windows - 进程资源管理器 : What does the Commit History graph show?

c++ - C++中 vector 的初始容量

linux - ps 中的 RSS 内存总和小于实际使用的内存