Java 需要安卓堆按摩吗

Java 需要安卓堆按摩吗,java,android,memory,heap,Java,Android,Memory,Heap,我正在尝试在我的应用程序上加载已保存的游戏。问题是,我一直遇到以下问题: 06-01 00:42:36.123: ERROR/dalvikvm-heap(10297): Heap Massage needed (5107596-byte external allocation too big) 06-01 00:42:36.123: ERROR/dalvikvm-heap(10297): -->Full GC (don't collect SoftRef

我正在尝试在我的应用程序上加载已保存的游戏。问题是,我一直遇到以下问题:

 06-01 00:42:36.123: ERROR/dalvikvm-heap(10297): Heap Massage needed (5107596-byte    
   external allocation too big)

 06-01 00:42:36.123: ERROR/dalvikvm-heap(10297): -->Full GC (don't collect 
       SoftReferences)

 06-01 00:42:36.163: ERROR/dalvikvm-heap(10297): -->Heap Massage was successful...

我想我知道为什么。当前的游戏(我想被删除和遗忘)仍然保留着记忆。我想“解锁”这个内存,那么有没有什么方法可以进行“堆转储”(引用是因为我是一个noob,可能使用了错误的技术词汇)?

一旦您消除了对当前游戏数据的所有引用(通过将所有相关变量、散列项等设置为
null
),您就可以调用
System.gc()
(或
Runtime.getRuntime().gc()
)向JVM建议这将是垃圾收集的好时机。但是,请注意,您不能以这种方式强制垃圾收集。

您有纹理的全局贴图(或我猜的任何东西)吗加载到某个地方?如果是这样的话,你可能想在地图中使用weakreference…我没有这样的东西。我有一个surfaceview,其中有一些更大的位图。谢谢你的建议!调用Gerbage Collection似乎没什么用。有时很难找到所有需要释放的数据引用。只要有一个单独的e live reference,GC不会回收数据。本文涵盖了Android特有的一些问题。