在adb shell dumpsys meminfo中,“资产分配”是什么意思?

5
有人能告诉我在adb shell dumpsys meminfo Android中,资产分配是什么意思吗?我在启动我的Android设备时看到这个,我发现我的应用程序的resources.arsc即使我的应用程序没有运行也占用了516K。
谢谢。
1个回答

1

使用resources.arsc,有两种可能发生的情况。

通常,文件以未压缩的形式存储在.apk中。Android mmap()该文件,并根据需要仅从中读取,而无需将整个文件加载到RAM中。

但是,如果它被压缩,则无法直接随机访问该文件,因此会将其解压缩并保留在内存中以进行进一步操作(例如加载字符串)。

如果应用程序没有运行,我不确定为什么会出现这种情况。也许它作为后台进程保留?


为什么不先对Android进行解压缩,然后再将其复制到data/data中,或者先进行一些操作再放入data/app中,这样可以使apk文件更小? - DzMonster
我没有一个好的答案。我认为你不管怎样都必须做出妥协。如果你将它保存到 /data/data,你会浪费磁盘空间。如果你将它加载到 RAM 中,你会浪费 RAM。你的文件足够大吗?这个分配会成为一个问题吗? - Vlad
是的,现在它有近30MB大小,resource.arsc文件为6MB。因为里面包含了很多语言。有什么建议吗? - DzMonster
我不知道任何简单的方法。您可以将这些语言作为单独的 xml 或 json 文件提供到 apk 中,并为它们构建一个加载器。然后即使它们被压缩,您也永远不必同时加载所有文件。如果您想要最小化对代码的更改,可以使用此链接中提供的工具:http://comserv.cs.ut.ee/forms/ati_report/downloader.php?file=FE07EAE132DBEEBE7231CEFB0E0200EA2E6E508E。 - Vlad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接