从这些日志来看,我的Android游戏的内存使用是否合理?

从这些日志来看,我的Android游戏的内存使用是否合理?,android,memory,memory-management,Android,Memory,Memory Management,我已经为Android平台编写了一个Java游戏,目前正在进行全面测试,然后才发布。从修复的bug等方面来看,这一切看起来都不错,但目前困扰我的是内存使用 从以下日志转储中可以看出,在托管有16MB VM堆的Android 2.3.3的模拟器上执行时,一切看起来都很好: 在开始游戏前启动后: 开始游戏后: 因此,从这些条目来看,我似乎有大约50%的可用内存可供使用 - 现在,当我用32MB虚拟机堆启动一个托管Android 4.1.2的模拟器时,我从日志中看到的值有些令人失望: 在开始游戏前启动

我已经为Android平台编写了一个Java游戏,目前正在进行全面测试,然后才发布。从修复的bug等方面来看,这一切看起来都不错,但目前困扰我的是内存使用

从以下日志转储中可以看出,在托管有16MB VM堆的Android 2.3.3的模拟器上执行时,一切看起来都很好:

在开始游戏前启动后:

开始游戏后:

因此,从这些条目来看,我似乎有大约50%的可用内存可供使用

-

现在,当我用32MB虚拟机堆启动一个托管Android 4.1.2的模拟器时,我从日志中看到的值有些令人失望:

在开始游戏前启动后:

开始游戏后:

尽管此仿真器的内存量是原来的两倍,但可用内存量仍在4%-10%的范围内徘徊

起初,我认为这可能是因为我正在加载的背景图形比800x480像素大1280x800像素,但通过删除加载背景图形的代码来证明这一点,并注意到可用内存量保持不变

也许我只是有点偏执,实际上没有什么问题,因为从上面的日志来看,Android 4.1.2实例在启动后立即报告了6%到10%的可用内存

我还添加了一些在Android 4.1.2模拟器上运行游戏时的手动内存使用记录。您将从以下日志条目中看到,我已经包括了用于获取值的方法,例如Runtime.getRuntime.totalMemory:

05-23 15:09:26.386: DEBUG/Memory Usage(618): Heap Limit: 32(amount to stay within)
05-23 15:09:26.386: DEBUG/Memory Usage(618): Heap
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Current Total: 23863264 (Runtime.getRuntime().totalMemory())
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Maximum: 33554432 (Runtime.getRuntime().maxMemory())
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Free: 792736 (Runtime.getRuntime().freeMemory())
05-23 15:09:26.386: DEBUG/Memory Usage(618): Native Heap
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Allocated: 10139952 (Debug.getNativeHeapAllocatedSize())
05-23 15:09:26.396: DEBUG/Memory Usage(618): - Size: 10383360 (Debug.getNativeHeapSize())
05-23 15:09:26.396: DEBUG/Memory Usage(618): - Free: 136912 (Debug.getNativeHeapFreeSize())
欢迎提出任何建议和/或意见

谢谢你的阅读, 韦恩

05-23 15:12:40.762: DEBUG/dalvikvm(314): GC_EXTERNAL_ALLOC freed 104K, 50% free 2833K/5575K, external 5104K/5748K, paused 46ms
05-23 15:12:41.143: DEBUG/dalvikvm(314): GC_EXTERNAL_ALLOC freed 10K, 50% free 2841K/5575K, external 6046K/6103K, paused 46ms
05-23 15:12:42.202: DEBUG/dalvikvm(314): GC_EXTERNAL_ALLOC freed 79K, 49% free 2925K/5639K, external 7656K/7658K, paused 46ms
05-23 15:08:32.566: DEBUG/dalvikvm(149): GC_CONCURRENT freed 530K, 6% free 9763K/10375K, paused 16ms+19ms, total 132ms
05-23 15:08:32.946: DEBUG/dalvikvm(149): GC_CONCURRENT freed 913K, 10% free 9786K/10823K, paused 16ms+27ms, total 128ms
05-23 15:09:25.706: DEBUG/dalvikvm(618): GC_CONCURRENT freed 418K, 3% free 20563K/21063K, paused 18ms+19ms, total 118ms
05-23 15:09:25.706: DEBUG/dalvikvm(618): WAIT_FOR_CONCURRENT_GC blocked 38ms
05-23 15:09:26.316: DEBUG/dalvikvm(618): GC_FOR_ALLOC freed 557K, 4% free 21761K/22599K, paused 55ms, total 75ms
05-23 15:09:26.386: DEBUG/Memory Usage(618): Heap Limit: 32(amount to stay within)
05-23 15:09:26.386: DEBUG/Memory Usage(618): Heap
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Current Total: 23863264 (Runtime.getRuntime().totalMemory())
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Maximum: 33554432 (Runtime.getRuntime().maxMemory())
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Free: 792736 (Runtime.getRuntime().freeMemory())
05-23 15:09:26.386: DEBUG/Memory Usage(618): Native Heap
05-23 15:09:26.386: DEBUG/Memory Usage(618): - Allocated: 10139952 (Debug.getNativeHeapAllocatedSize())
05-23 15:09:26.396: DEBUG/Memory Usage(618): - Size: 10383360 (Debug.getNativeHeapSize())
05-23 15:09:26.396: DEBUG/Memory Usage(618): - Free: 136912 (Debug.getNativeHeapFreeSize())