我想了解我的Android应用目前使用多少内存以防止OutOfMemoryExceptions
。我知道你可以通过调用Runtime.maxMemory();
找到一个应用程序可以使用的最大内存 - 而在某些设备上这个内存非常低(24MB),因此内存将成为我游戏的一个问题。
当我在启动我的游戏引擎之前在onCreate()方法中调用Runtime.totalMemory()
时,我得到~23MB - 在启动我的游戏引擎后调用在将一堆(小)位图加载到内存后,我得到了大约25MB的堆使用量。 2MB的差异可能正是我的GameEngine的用法(它仍然是早期版本),但我不是百分百肯定。
然而,这个内存使用量已经超过了一些低内存Android设备的maxMemory限制。我非常确定我的应用程序(例如共享库)没有主动创建的应用程序运行时的部分不计入maxMemory限制;但显然他们确实计算了总记忆力。
那么我怎么能确定我的应用程序在达到maxMemory限制之前使用了多少内存呢?
Runtime.freeMemory()
也无济于事。