LibGdx - 在 Sprite 中处理 Sprite 或 Texture 是强制性的吗?
LibGdx - Dispose Sprite or Texture in Sprite is mandatory?
我正在用我的资源中的纹理加载我的精灵,就像我在下面提到的那样。
gameBoardSprite = new Sprite( new Texture(Gdx.files.internal("data/gameboard.png")));
我的代码中是否需要配置以下内容?是强制性的吗?
gameBoardSprite.getTexture().dispose();
从技术上讲,您不必处理它,但不处理它会影响您的性能。
在 android Dalvik 将启动并决定是否释放您的一些内存。从而造成丢帧。
在您的桌面上,可能会发生内存泄漏。
阅读here了解更多信息
是的,在您失去对它的引用之前必须对任何 Disposable
对象调用 dispose
,否则会发生内存泄漏。 VM 不会自动处理 OpenGL 对象(如纹理)使用的本机内存,因此您必须在删除引用之前手动执行此操作并让 GC 声明对象本身声明的 "non-native" 内存。
如果您要在应用程序的整个生命周期中使用纹理,您可能不打算处理它,但在 Android 上,您仍然需要在 Game
的 dispose
方法,因为在某些情况下 Android 会关闭您的 Activity 但不会关闭整个应用程序,因此当用户重新打开您的游戏时,所有以前的纹理都会泄露。
我正在用我的资源中的纹理加载我的精灵,就像我在下面提到的那样。
gameBoardSprite = new Sprite( new Texture(Gdx.files.internal("data/gameboard.png")));
我的代码中是否需要配置以下内容?是强制性的吗?
gameBoardSprite.getTexture().dispose();
从技术上讲,您不必处理它,但不处理它会影响您的性能。
在 android Dalvik 将启动并决定是否释放您的一些内存。从而造成丢帧。
在您的桌面上,可能会发生内存泄漏。
阅读here了解更多信息
是的,在您失去对它的引用之前必须对任何 Disposable
对象调用 dispose
,否则会发生内存泄漏。 VM 不会自动处理 OpenGL 对象(如纹理)使用的本机内存,因此您必须在删除引用之前手动执行此操作并让 GC 声明对象本身声明的 "non-native" 内存。
如果您要在应用程序的整个生命周期中使用纹理,您可能不打算处理它,但在 Android 上,您仍然需要在 Game
的 dispose
方法,因为在某些情况下 Android 会关闭您的 Activity 但不会关闭整个应用程序,因此当用户重新打开您的游戏时,所有以前的纹理都会泄露。