【问题标题】:Localized strings (Android) took too much memory本地化字符串 (Android) 占用了太多内存
【发布时间】:2013-06-17 16:25:58
【问题描述】:

美好的一天, 我有一个相当大的项目,目前已本地化为 21 种语言,其中一种语言大约有 9000 个单词!这不是很有趣,但是

  • 使用所有这些资源编译并启动应用程序,启动后占用大约 11 MB 内存(简单地由 Debug.getNativeHeapSize() 测量)

  • 当我删除 20 种语言并只保留默认一种时,它在启动后只有 7.5 MB

因为我的应用程序的最大问题是可用于单个进程的内存不足的设备(主要是具有 2.X android 的旧设备),这对我来说是一个非常严重的问题。

所以这里有两个问题,希望有人能给点有用的建议

  1. 我希望 Android 只加载所需的资源,那么这些额外的语言怎么可能产生如此巨大的差异,而在最坏的情况下,内存中应该只是可用资源的列表

  2. 如果对第 1 点没有任何解释,有没有办法将资源预编译成单独的包并按要求下载?例如,在一些用户选择他想使用的语言的启动活动中?

欢迎提出任何建议。谢谢

【问题讨论】:

  • 使用 MAT 精确确定内存差异所在。
  • 令我非常惊讶的是,两个版本都显示完全相同的结果 - tinypic.com/r/2ptuzxw/5 - 所以 Debug.getNativeHeapSize() 似乎不是检查当前占用内存量的最佳方法。谢谢你的好点......如果它“只是”一个评论,我怎么能接受你的回答?

标签: android memory localization resources


【解决方案1】:

Android 上的内存测量让人想起 Zork 的一部分:曲折的小段落迷宫,都一样。

如果您的问题是虚拟机中的问题,尝试获得答案的最佳方法 (恕我直言) 是使用 MAT。特别是在 Android 3.0 及更高版本上,如果您在 SDK 中分配内存,它应该会显示在此处。

要更全面地讨论衡量内存使用的非 MAT 方法及其陷阱,我推荐Dianne Hackborn's epic answer on the subject

【讨论】:

    猜你喜欢
    • 2014-09-20
    • 2011-03-14
    • 2013-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 2015-11-17
    • 2017-09-01
    • 2015-04-13
    相关资源
    最近更新 更多