我在使用libGDX开发2D游戏时遇到了一些内存消耗问题。
这是一个2D游戏,图形内容丰富 - 有许多纹理、动画、字体等。出于某种原因,所有图形内容都在游戏开始时加载 - 这里就有一个内存问题。我在不同的设备上测试了内存分配(本地和堆),得到了不同的结果:(我根据纹理大小将所有设备分为组)
Group 1(适用于~840 * 480屏幕的纹理) - HTC Desire(Froyo):178Mb(本地) - 12Mb(堆) - 应用程序加载成功 - HTC One V(ICS):30Mb(本地) - 12Mb(堆) - 应用程序加载成功 - HTC Desire S(Jelly Bean):30Mb(本地) - 12Mb(堆) - 应用程序加载成功
Group 2(适用于~1366 * 768屏幕的纹理) - Samsung(Google)Galaxy Nexus:329Mb(本地) - 18Mb(堆) - 完美运行 - Galaxy TAB(蜂巢):164Mb(本地) - 10Mb(堆) - 应用程序崩溃(Surface.OutOfResouresException)。
我认为在所有Android版本上可能存在一些重要的内存管理差异,这给我带来了麻烦。
有人能解释一下在Android 3.x上加载纹理时到底发生了什么吗?或者可以发布一些链接以了解需要做什么来解决此问题。
我进行了一些额外的测试,包括在3.x模拟器上运行游戏(我知道这不是最好的方法,但日志与之前的模拟器和Galaxy Tab类似)
最终,我使用逐步加载资源并加入一些进度条来解决了这种情况。经过所有尝试,我没有找到其他方法。
这是一个2D游戏,图形内容丰富 - 有许多纹理、动画、字体等。出于某种原因,所有图形内容都在游戏开始时加载 - 这里就有一个内存问题。我在不同的设备上测试了内存分配(本地和堆),得到了不同的结果:(我根据纹理大小将所有设备分为组)
Group 1(适用于~840 * 480屏幕的纹理) - HTC Desire(Froyo):178Mb(本地) - 12Mb(堆) - 应用程序加载成功 - HTC One V(ICS):30Mb(本地) - 12Mb(堆) - 应用程序加载成功 - HTC Desire S(Jelly Bean):30Mb(本地) - 12Mb(堆) - 应用程序加载成功
Group 2(适用于~1366 * 768屏幕的纹理) - Samsung(Google)Galaxy Nexus:329Mb(本地) - 18Mb(堆) - 完美运行 - Galaxy TAB(蜂巢):164Mb(本地) - 10Mb(堆) - 应用程序崩溃(Surface.OutOfResouresException)。
我认为在所有Android版本上可能存在一些重要的内存管理差异,这给我带来了麻烦。
有人能解释一下在Android 3.x上加载纹理时到底发生了什么吗?或者可以发布一些链接以了解需要做什么来解决此问题。
我进行了一些额外的测试,包括在3.x模拟器上运行游戏(我知道这不是最好的方法,但日志与之前的模拟器和Galaxy Tab类似)
最终,我使用逐步加载资源并加入一些进度条来解决了这种情况。经过所有尝试,我没有找到其他方法。