android - 为什么正常的图片分配了很多内存?

标签 android

我的应用程序使用了一点内存,大约 3.4MB,在一些旧的 android 设备上,比如 GT-I9001。但是当我在 HTC one 中运行它时,我的应用程序使用了更多的内存。

enter image description here

看,分配内存26.881MB,太大了,空闲内存只有2.940MB。然后我用MAT工具检查内存泄漏,我发现资源位图使用mach内存。

我无法解释原因。我的应用程序经常内存不足。我想也许问题是由高屏幕分辨率引起的。如果有人也遇到这个问题,请加入讨论,谢谢!

我调试了这个问题,找到了一些原因:

enter image description here

我的启动activity中的onCreate()函数,你可以看到断点。在调用 setContentView(R.layout.welcome) 加载布局 xml 之前,应用程序仅使用分配的内存 3.4MB。然后应用程序运行到下一步,它使用分配的内存 19MB。所以我认为这个问题一定是加载layout xml引起的。

我修改了“welcome.xml”文件,删除了所有只有“RelativeLayout”的小部件

enter image description here

但该程序还使用 19MB 内存。最后,我删除了RelativeLayout的背景,程序内存恢复正常大小,只用了3MB。

图片“loading_background.png”的大小只有21KB,我想可能是高端设备的高屏幕分辨率改变了内存中的图片大小,我会尝试使用9.png图片。如果您了解这部分问题,请加入讨论,谢谢!

最佳答案

如果你使用大图像作为背景,这不是内存泄漏。

文件大小无关紧要。当它加载到内存中时,它需要 width * 图像的高度 * 4bytes

尽可能使用小的 9 block 图像或可绘制的形状。

关于android - 为什么正常的图片分配了很多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16961096/

相关文章:

android - 无法在 eclipse 中构建新的 android 项目-文件夹为白色且没有内容

javascript - 100 多张图片的图片 src - iOS 应用程序大小问题

android - AppCompat 的替代方案 setSupportProgressBarIndeterminateVisibility for AppCompat v23

android - 向上导航会重新加载加载器,但向后导航不会

java - 对互联网的意向

Android TextView 内容丢失,即使 android :freezesText is set to true

android - 需要将 HTML 页面(使用 CSS)显示为翻页的书

java - ANDROID:mysql JDBC 中的用户登录认证

android - 使用 Intent 调用谷歌地图时抑制选择器对话框

java - OnTouchListener JAVA 使用 Android Studio 删除限定符