gpt4 book ai didi

android - 一次可以调用多少hashMap操作 'safe'

转载 作者:行者123 更新时间:2023-11-29 17:57:48 26 4
gpt4 key购买 nike

我正在开发一个应用程序,其中我有一个包含 5000 行和 4 列的数据库。

problem_id (int)
problem_no (string)
problem_title (string)
dacu (int)

我需要频繁查询大规模的单个项目,例如 1000 查询以根据 problem_id 获取 problem_no有时只查询一个项目

所以我决定查询所有数据库行,并在运行时将它们映射到 hashMap 中。我知道 hashmap 插入/查询操作只需要 O(1) 或有时更多,所以我认为我只需要 5000 次操作。但是在这种情况下 hashMap 会占用多少空间呢? android dalvik 能够毫无问题地分配它们吗?

最佳答案

How much space will hashmap take?

这是一个实现细节,可能因版本、设备等而异。只要我们了解这一点并仅寻找估计值,您实际上可以非常轻松地对其进行测量。 Android SDK 包括一套功能强大的内存分析工具。查看 Eclipse MAT(我眼中最好的一个)。您可以在 hashmap 完全加载时获取堆快照,然后使用 MAT 查看需要多少字节。确保对哈希本身、键和值求和(如果我没记错的话,MAT 也可以为您计算(它可以很好地处理核心集合)。

Will dalvik be able to allocate?

为了便于讨论,假设您的 HashMap 占用 1MB 内存。要了解这是否很大,我们需要了解我们所处系统的限制。Dalvik 限制堆的最大大小。限制因设备而异。非常旧的设备上的最小值是 16MB。 Samsung Galaxy 2 等设备大约有 32MB-48MB,而 Galaxy 3 和 4 等新设备则超过 100MB。

应用程序中最大的内存占用通常是位图。由于每个像素可能占用多达 4 个字节,因此全屏位图很容易占用几 MB 的内存。

考虑到这一点,1MB 的通行费听起来不错。它相当于使用漂亮的背景图像 :) 如果您的整体内存使用率较低,您可以按您认为合适的方式分配它。内存分析工具(MAT 或 DDMS)可让您准确了解您的应用当前使用了多少内存,因此您可以轻松估算您的总消耗量。

其他想法:

  • 在内存中缓存内容以提高性能通常是个好主意。因此,在我看来,您的方法是一个很好的方法(只要您了解内存的含义)。

  • 由于您的内存散列映射只是一种优化,您可以格外小心,并且只在有空闲内存时才这样做。您可以轻松测量可用堆的数量(即 API)并据此做出决定。您可以收听低内存通知事件(有关这些的谷歌)。您甚至可以捕获分配失败的 OutOfMemoryError 异常,并在运行时更改您的内存策略。

  • 您所处的 field 很难进行精确测量。请务必在多个设备和多个 Android 版本上进行质量检查。要模拟低内存设置,请尝试使用您能找到的最旧的设备。

关于android - 一次可以调用多少hashMap操作 'safe',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18095108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com