Pet*_*mir 2 memory ram android memory-leaks image
我一直在编写这个应用程序,它显示了公交线路时刻表的图像.目前有32行,每个都有自己的图像(由于格式化和缺少数据不能使用文本,不得不做出妥协).我从服务器上的PHP文件中获取了一个echo,它检索有关总线及其图像的数据,然后将数据和图像下载到内部存储器并加载每行的按钮(动态布局).
ImageViews在创建时设置为null,只有在您单击按钮后才会填充它们.我注意到我的应用程序在启动时使用了大约20MB的RAM.打开10-15行(10-15个图像加载到ImageViews中),RAM使用率攀升至60MB然后崩溃(达到我设备的堆大小限制).我知道图像密集型应用程序倾向于使用大量RAM,我的计划是每次只将其限制为一个图像(因此,一旦用户点击其他一些总线,其他人将被关闭并且他们的图像视图被设置回null ),但是想知道我,可以清空ImageView导致RAM大约20MB?我的图像宽度为320像素,高度范围为200到1500像素(我知道,它很多),但我已将它们设置为灰度并压缩它们(图像的大小从50kb到150kb).
我的应用程序的APK大小为710kb,安装时的应用程序大约为3MB,数据总计为7.5MB.
所以,澄清一下,我的问题是:
*1)空的ImageViews也会导致高RAM使用率吗?
2)如果是,我应该动态创建一个ImageView并在用户点击按钮时填充它,而不是当它们都是在启动时创建时的当前方法吗?
3)多维变量(主要是字符串,6个字符串,35维)是否会导致高RAM使用率?它们中的大多数长约10个字符.
4)我可以在Android Studio上使用哪些工具来帮助我找到可能的内存泄漏?
5)一旦ie,非全局变量会被自动销毁.函数返回了一个值,还是我需要在完成后手动将它们设置为null?
6)在开发应用程序时,通常一些减少Android上RAM使用率的良好做法是什么?*
对不起,这里不是很技术,我不是一个专业的程序员或任何东西,这更多的是我的业余爱好,我想在这里学习更多.谢谢你的阅读.
显示我的应用程序的图像:
所有公交线路都倒塌了

单击该按钮后,将显示该行的总线计划

*1)空的ImageViews也会导致高RAM使用率吗?
可能不是.这是位图本身占用了大量空间,而不是ImageViews.请记住,内存位图不会被压缩,因此您需要考虑的文件大小不是像素数.
3)多维变量(主要是字符串,6个字符串,35维)是否会导致高RAM使用率?它们中的大多数长约10个字符.
可能不是.
4)我可以在Android Studio上使用哪些工具来帮助我找到可能的内存泄漏?
您应该使用Android调试监视器(工具菜单> Android>监视器(包括DDMS).它有一个内存堆查看器,可以显示大犯罪者.它可以采用HPROF格式的堆转储,您也可以使用其他方式进行分析Java堆查看工具.
5)一旦ie,非全局变量会被自动销毁.函数返回了一个值,还是我需要在完成后手动将它们设置为null?
除非你做了一些奇怪的事情,一旦这些变量超出范围,局部变量使用的内存就有资格进行垃圾收集,所以要回答你的问题,你不需要将它们设置为null.