2011-08-24 46 views
2

如何知道在运行中我的应用程序有多少内存可用?我的应用程序下载一些位图并保存(在内存中)它们,以免再次下载它的用户。但据我所知,Java的堆只有16MB,所以我需要处理一些低内存情况并丢弃一些下载的位图(并非所有的位图都在同一时间显示,但它们可能对用户可见只需点击一下,如果已经下载)。执行期间可用应用程序的内存

有没有办法获得实际的可用内存(也就是说,Java堆可用内存)?

+0

首先是报告“圆盘状”专用存储区,第二系统RAM统计。 –

+0

感谢您的信息克里斯斯特拉顿。我删除了不必要的链接,只留下了所需的信息,然后... – Alesqui

+0

首先,您可能需要决定是否要将它们下载到设备的非易失性存储器中,即私有文件区或共享外部存储器(“sdcard “),所以他们坚持不同的会议。然后,您可以考虑将它们放在内存中,或根据需要加载它们,或者考虑各种按需自动方案。 –

回答

2

不要担心所有这些,请考虑将表示每个图像的对象包装在WeakReference中。然后只需使用Map<String, WeakReference<Image>>缓存即可,或者您正在执行此操作。

这样,如果它已经在缓存中,就使用它。如果它不在缓存中(或者它以前从未被访问过,或者它已经被GC'd),那么重新获取它。

+0

我会试试看。我会等待看看是否有办法按照我解释的方式获取可用内存,以便其他用户可能会看到答案。 (以防万一,投票:D ...好建议) – Alesqui

相关问题