gpt4 book ai didi

java - 从内存中快速卸载位图

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:50 27 4
gpt4 key购买 nike

我正在用 Java 创建这款 Android 游戏。我有很多图像,但不需要一次全部使用它们,所以我创建了一个资源管理器类来处理正在使用的位图。但是,我发现从内存中清除位图非常慢。我目前正在做这样的事情:

bitmap.recycle()
bitmap = null

System.gc (also tried Runtime.getRuntime().gc())

首先,有没有什么方法可以更快地从内存中卸载位图,或者是否有可能以某种方式检查它们是否真的被清除了,这样我也可以让加载屏幕也依赖于此?

最佳答案

当我们尝试 System.gc() 时,无法保证垃圾收集器会真正运行。因为 gc() 需要某些先决条件,例如资源匮乏。所以很明显调用 gc() 只是在浪费关键的 CPU 周期。作为开发人员,我们可以通过取消引用使 gc 收集不必要的对象。

有几种优化技术可以在创建游戏系统(游戏)时提供帮助。

  1. 使用纹理。这是一个 example .

  2. 使用 Sprite 和 SpriteSheets(与加载单个位图相比,它给系统带来的开销更少)。许多开源游戏引擎都在使用它。如果您不想使用它们,请了解如何从这些来源从头开始创建。

  3. 使用这些标准的 android 文档来了解如何 Loading Large Bitmaps EfficientlyCaching Bitmaps为了更好地使用位图。这个想法是当用户设备的效率不足以处理处理量和/或内存对于你的游戏来说更少时,你总是可以缩小位图(为了更好的响应而牺牲质量)。

  4. 始终针对内存泄漏问题测试您的应用。这是一个nice post这会有所帮助。

  5. 将游戏中同一场景中多次使用的元素保留在内存中(不要释放一次使用过)。原因是将图像加载到内存中需要花费大量时间。

希望对您有所帮助。

关于java - 从内存中快速卸载位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13963106/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com