Android 应用程序分配加载时会占用大量内存

Android 应用程序分配加载时会占用大量内存,android,memory-management,memory-leaks,android-memory,Android,Memory Management,Memory Leaks,Android Memory,在我的android应用程序中,我在应用程序启动时的日志中发现了这条消息 Grow heap (frag case) to 13.781MB for 3271696-byte allocation 调用setContentView()之后,甚至在执行应用程序的其他部分之前,都会发生这种情况 为什么设置内容视图会占用这么多内存 我不知道这意味着什么。能解释一下吗 谢谢没有简单的答案。内容视图有多大?你曾经用过月食垫吗?还有,屏幕有多大?是否有ImageView加载大图像?这大约是一个*1000x

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

Grow heap (frag case) to 13.781MB for 3271696-byte allocation
调用
setContentView()
之后,甚至在执行应用程序的其他部分之前,都会发生这种情况

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

我不知道这意味着什么。能解释一下吗


谢谢

没有简单的答案。内容视图有多大?你曾经用过月食垫吗?还有,屏幕有多大?是否有ImageView加载大图像?这大约是一个*1000x1000图像的大小

  • 注:早些时候计算错误
设置内容视图(int-res)填充布局并添加所有顶层视图


可能图像和其他复杂视图会给您的内存带来如此大的负担。考虑在可拉伸文件夹中调整图像大小。

我的图像不太大,只有450KB。我只是在加载屏幕上有一个imageview和一个webview。如果你提供一些代码,在这种情况下我可能会说得更准确。很多事情都可能导致这种情况。这是在压缩之前还是之后(jpeg/gif/png)的450k?未压缩的450k.jpeg在解压缩后可能会有几个兆。图像在显示时往往会解压缩到RAM中。我也同意A.Ercan的说法。一堆450k的图像真的可以让RAM的使用量激增@Ercan:我不知道如何提供一些代码。这是在onCreate方法内的MainActivity中执行的第一行。@JoePlante应该在反压缩之前执行。我使用资源管理器检查了文件大小。但这是一个标准图像,用作启动屏幕。我的图像不大,只有450kb。我只是在加载屏幕上有一个imageview和一个webview。它和我的图像在一起。我删除了图像,它不再显示任何内存分配。我必须显示一个启动屏幕,那么什么是前进的最佳途径呢?有几种方法。例如,您正在使用的设备的分辨率是多少?您可以将图像的分辨率限制在某些设备上,并相应地制作可绘制图像。分辨率越高的设备将有更多的RAM。其他方法包括将图像分割成瓷砖,这可能有效,也可能无效。