【问题标题】:App allocation large memory when it loads up加载时应用程序分配大内存
【发布时间】:2012-10-28 20:42:03
【问题描述】:

在我的 android 应用程序中,当应用程序启动时,我在日志中发现了这条消息。

Grow heap (frag case) to 13.781MB for 3271696-byte allocation

这会在调用 setContentView() 之后不久,甚至在应用程序的其他部分执行之前发生。

为什么设置内容视图会占用这么多内存?

我不确定这意味着什么。能解释一下吗?

谢谢

【问题讨论】:

    标签: android memory-management memory-leaks android-memory


    【解决方案1】:

    没有简单的答案。内容视图有多大?您曾经使用过 Eclipse MAT 吗?另外,屏幕有多大?是否有加载大图像的 ImageView?这大约是 *1000x1000 图像的大小。

    • 注意:之前算错了。

    【讨论】:

    • 我的图片不大,只有 450kb。我在加载屏幕中只有一个 imageview 和一个 webview。
    • 这是我的形象。我删除了图像,它不再显示任何内存分配。我必须显示一个启动画面,那么最好的方法是什么?
    • 有几种方法。例如,您正在使用的设备的资源是多少?您可以将图像的分辨率限制在某些设备上,并相应地制作可绘制对象。分辨率越高的设备将具有更多的 RAM。其他方法包括将图像分割成图块,这可能有效,也可能无效。
    【解决方案2】:

    setContentView(int res) 填充布局并添加您拥有的所有顶级视图。

    可能是图像和其他复杂的视图会如此多地加载您的记忆。考虑调整可绘制文件夹中的图像大小。

    【讨论】:

    • 我的图片不大,只有 450kb。我在加载屏幕中只有一个 imageview 和一个 webview。
    • İ如果您提供一些代码,在这种情况下我可能会说得更准确。很多事情都可能导致这种情况。
    • 压缩前还是压缩后的 450k (jpeg/gif/png)?未压缩的 450k .jpeg 在解压缩后可能是几兆。图像在显示时往往会被解压缩到 RAM 中。我也同意 A.Ercan 的说法。一堆 450k 的图像真的会爆炸 RAM 使用率
    • @Ercan:我不知道如何提供一些代码。这是在 onCreate 方法中 MainActivity 中执行的第一行。
    • @JoePlante 应该在去压缩之前。我使用资源管理器检查了文件大小。但那是用作启动画面的标准图像。
    猜你喜欢
    • 2015-10-16
    • 2012-07-18
    • 2022-11-25
    • 2014-11-23
    • 2016-07-06
    • 2011-07-25
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    相关资源
    最近更新 更多