在Android上是否可能消耗比堆大小更多的内存?
我让我的应用程序在aSamsung Galaxy note 3的前台运行了24小时。一开始我拍了一张RAM快照 {“AvailableSystemRAM”:1341,“AvailableAppRAM”:10,“TotalAppRAM”:49} 更改12小时: {“AvailableSystemRAM”:1265,“AvailableAppRAM”:4,“TotalAppRAM”:52} 24小时后,结果是: {“AvailableSystemRAM”:992,“AvailableAppRAM”:0,“TotalAppRAM”:61} 这是内存泄漏或其他应用程序和服务在后台处理的迹象吗?我假设如果我使用所有可用的内存,Android会抛出OutOfMemoryError 更新 答案是肯定的。一些本机函数导致了一个在Android Studio的内存监视器中看不到的小内存泄漏。我正在使用它转换图像。后来我在这里找到了一份关于此方法的报告:在Android上是否可能消耗比堆大小更多的内存?,android,memory,Android,Memory,我让我的应用程序在aSamsung Galaxy note 3的前台运行了24小时。一开始我拍了一张RAM快照 {“AvailableSystemRAM”:1341,“AvailableAppRAM”:10,“TotalAppRAM”:49} 更改12小时: {“AvailableSystemRAM”:1265,“AvailableAppRAM”:4,“TotalAppRAM”:52} 24小时后,结果是: {“AvailableSystemRAM”:992,“AvailableAppRAM”:
可能是你的重复让我错了。我不需要增加堆,但我感兴趣的是它到底是如何工作的。我可以使用比堆限制更多的RAM吗,否则会抛出OutOfMemoryError?所以,我可以在安卓设备上泄漏400MB的内存,或者说这是设计上不可能的。我明白了。我被标题弄糊涂了。。虽然我不确定你能把它改成什么来消除混乱。实际上,我在工作中遇到了这样的问题。在一次巨大的神秘分配之后,我们在某些设备上获得了
OutOfMemoryError
。所以,我想,有趣的是,在一定的消耗水平下,你只会得到一个OOM异常。如果你想知道你的应用程序是否有内存泄漏,你应该监控你应用程序的堆,而不是你设备的总堆。这通常是正确的。但在本例中,我在本机环境中有一个很小的内存泄漏,从长远来看,它导致了意外的应用程序关闭。