我正在创建一个计算器应用程序,这样我就可以熟悉Java(刚开始学习)和Android SDK。我有一个关于内存使用的问题。当我点击“=”按钮时,每次点击时内存增加约0.03 MB(即使在结果变量显示“Infinity”之后)。当我达到堆限制时,它下降大约8 MB。在=按钮上调用的方法是:
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 :(得分:2)
内存使用量增加“0.03MB”合理。
当您按下“=”按钮时,该方法执行算术运算。这个操作很轻,但在你的应用程序当时不是唯一正在发生的事情。
当您触摸屏幕时,会拦截触摸事件并执行所需的操作。也可以重新绘制视图以显示结果。还有很多其他小型Android进程正在发生幕后。
所以,这里绝对没有什么可担心的。当系统认为合适时,它会自动垃圾收集不必要的对象并释放堆。