【问题标题】:Heap size getting increased while working with libgdx使用 libgdx 时堆大小增加
【发布时间】:2011-10-20 07:14:30
【问题描述】:

在 libgdx 中,我曾经释放所有资源,例如纹理、音频资源以及世界对象。因为我的游戏中有很多纹理、drawbles。通过调用 dispose() 释放了对纹理和声音资源的管理。但是问题仍然存在,并且堆大小正在增加。可能在某一时刻VM 无法为进程分配内存,如果它超过最大大小,最终结果是OutOfMemory。请帮我从this.App流程中走出来

  1. Home Activity 呈现给另一个扩展 AndroidApplication(应用程序侦听器)的 Activity。
  2. 我通过在此处初始化侦听器在 onCreate() 中调用应用程序侦听器。
  3. 将一些游戏数据与上下文一起传递给侦听器。

【问题讨论】:

    标签: android libgdx


    【解决方案1】:

    如果您使用的是 Bitmap 类,那么您可能需要在处理之前检查是否对每个类都调用了回收。这解决了我的许多记忆问题。

    Bitmap 和 recycle() 的文档可以在这里找到 http://developer.android.com/reference/android/graphics/Bitmap.html

    如果这没有帮助,那么您将不得不更多地描述应用程序的结构。也许您有错误的线程或正在消耗资源的东西。您使用什么工具来诊断内存问题?

    【讨论】:

    • 我正在将纹理作为“new Texture(Gdx.files.internal("top.png"));”加载到我的游戏中。我在这里没有使用位图类。在外部,我只使用 libgdx 框架,在 dispose() 中我正在调用 texture.dispose()。
    • 您是否尝试过使用 MAT (eclipse.org/mat) 分析一些转储并查看占用最多空间的内容?通过浏览它们会发现一些有趣的东西。当 Activity 暂停和恢复时,或者应用程序中的某些操作时,内存是否不断增加?
    • 我要调查一下
    • 我观察到一些float[], char[] 逐级消耗很多。即使我正在正确释放资源,也无法管理它
    • 我已经编辑了帖子并描述了我的游戏的控制流程,正如我所说的,当玩家获胜或暂停或输掉游戏时,我正在提升其他 Activity 并在 onDestroy() 中销毁该应用程序。仅供参考,即使我暂停、恢复或丢失,对于下一个级别,它在每种情况下都会增加。
    猜你喜欢
    • 2012-06-17
    • 2017-09-29
    • 2011-04-03
    • 2014-10-24
    • 2012-12-07
    • 2013-01-26
    • 2014-05-13
    • 2015-11-22
    • 2010-11-24
    相关资源
    最近更新 更多