Java 按下按钮时,Android内存使用量会增加
我正在创建一个计算器应用程序,以便熟悉Java(刚刚开始学习)和Android SDK。我有一个关于内存使用的问题。每当我点击“=”按钮时,每次点击内存都会增加约0.03 MB(即使在结果变量读取“Infinity”之后)。当我达到堆限制时,它会下降大约8MB。在=按钮上调用的方法如下:Java 按下按钮时,Android内存使用量会增加,java,android,Java,Android,我正在创建一个计算器应用程序,以便熟悉Java(刚刚开始学习)和Android SDK。我有一个关于内存使用的问题。每当我点击“=”按钮时,每次点击内存都会增加约0.03 MB(即使在结果变量读取“Infinity”之后)。当我达到堆限制时,它会下降大约8MB。在=按钮上调用的方法如下: public double calculate() { switch(_op) { case '/': result = _firstnum / _secondn
public double calculate() {
switch(_op) {
case '/':
result = _firstnum / _secondnum;
break;
case '*':
result = _firstnum * _secondnum;
break;
case '-':
result = _firstnum - _secondnum;
break;
case '+':
result = _firstnum + _secondnum;
break;
}
_firstnum = result;
return result;
}
如您所见,我没有创建任何变量或对象。所有引用的变量都已声明和初始化。这种方法只是做简单的算术运算,为什么它会增加内存使用量?内存使用量增加“0.03MB”是公平的
当您按下“=”按钮时,该方法进行算术运算。该操作很轻,但它不是应用程序中当时发生的唯一事情
当您触摸屏幕时,会截获触摸事件并采取所需的操作。还可以重新绘制视图以显示结果。还有很多其他小型Android进程在幕后进行
所以,这里绝对没有什么可担心的。当系统认为合适时,它将自动垃圾收集不必要的对象并释放堆。您如何将值从视图转移到变量&u firstnum&&u secondnum??你能展示这段代码吗?你有什么问题?您可能没有在代码中做任何复杂的事情,但是框架做了很多工作。处理事件,可能将它们发送到其他进程,可能重新绘制活动。由于内存在达到堆限制时被释放,因此似乎没有内存泄漏。@dhke我就是这么想的。我真的只是好奇幕后发生了什么@Panther当用户按下按钮时,我得到文本值并将其转换为double并将其存储在适当的变量中。要显示结果,我将
result
转换为字符串,并在文本视图中显示它。+1还需要注意的是,JVM提供了多个GC策略。根据给定应用程序中添加到堆中的对象的生命周期和数量,一种策略可能优于另一种策略。再见,谢谢。正如我所说,我对整个Android开发(一般来说是移动开发)都是新手。我想知道幕后发生了什么,我觉得这有助于我更好地了解我所使用的环境。