android– 在内存有限的情况下,如何优雅地降低我的性能?

android– 在内存有限的情况下,如何优雅地降低我的性能?,第1张

概述我花了最近几天试图消除游戏中的内存泄漏,导致许多内存不足错误.我即将添加大量的图形,虽然不是很复杂,但会大大增加我的系统的处理要求,我有点担心我的内存使用情况,我希望有人可能有给我一些提示.我不想低于Android2.1,所以请为此定制任何答案.首先,我的游戏包括:>2个活动,13

我花了最近几天试图消除游戏中的内存泄漏,导致许多内存不足错误.我即将添加大量的图形,虽然不是很复杂,但会大大增加我的系统的处理要求,我有点担心我的内存使用情况,我希望有人可能有给我一些提示.我不想低于Android 2.1,所以请为此定制任何答案.

首先,我的游戏包括:

> 2个活动,13个XML文件(一些与布局的一小部分有关,一些对话框,以及与活动直接相关的2个).
>许多可绘制的,在Adobe Illustrator中制作并转换为PNG.这些可能很大,但并不是非常大,并且在大多数情况下,在任何给定时间内只有少量它们在内存中.
>相当多的对话.
>针对AndroID 1.6及以上版本.
>我使用了最新的Admob,因此,我必须建立3.2.
>我的模拟器的默认堆大小约为24 MB.

我游戏中的一些示例图片:

我学到:

>尽管我的应用程序总大小只有500K左右,但我不知何故占用24 Megs,由adb shell procrank计算.
>我做了相当多的优化,但没有看到内存的大幅增加.
>使用工具查找Heap中的内容通常只显示大约7 MB,使用大约3 MB.有时候,在打开新的对话框之类的时候,我看到了增加,但我不能说我看到它那么大……
> MAT表明我的类都没有使用异常大量的内存.

所以,鉴于所有这些,我的问题.

> 24 Mb是开发到(1.6 androID)的实际要求吗?
>假设它是,我怎样才能为可以处理它的系统提供更好的图形,但不能为旧系统崩溃和刻录?
>我可以使用哪些常见问题来提高内存使用率?

解决方法:

在没有看到您的实际代码的情况下,我无法说明以下内容是否与您相关.但是,值得一试.

如果您还没有这样做,可以考虑使用一种名为LruCache的东西. http://developer.android.com/reference/android/util/LruCache.html

使用此工具,您可以确定您的缓存对象(例如位图)将在何时符合垃圾回收条件.因此,如果你想将其设置为4mb(例如), *** 作系统将尝试超越它时处理它. (有关实现细节和一个很好的例子,请参阅文档).

唯一的缺点是那个小宝石只带有3.2,所以你必须在AndroIDManifest中制作你的min SDK,或者在运行时以编程方式检查API级别以确定你是否可以使用它.前3.2我会说你需要在你正在使用的任何位图上调用recycle(),但如果你已经优化了,我会认为你已经做好了这个机会很好.

这是关于堆和本机内存之间差异的一个很好的小片段. http://code-gotcha.blogspot.com/2011/09/android-bitmap-heap.html它可能(取决于你在做什么)帮助你理解为什么你没有看到你期望的记忆力下降.

最后来自SO的这篇文章也应该有助于处理堆大小:
Detect application heap size in Android

希望有所帮助.

总结

以上是内存溢出为你收集整理的android – 在内存有限的情况下,如何优雅地降低我的性能?全部内容,希望文章能够帮你解决android – 在内存有限的情况下,如何优雅地降低我的性能?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1118854.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存