Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按下按钮时,Android内存使用量会增加_Java_Android - Fatal编程技术网

Java 按下按钮时,Android内存使用量会增加

Java 按下按钮时,Android内存使用量会增加,java,android,Java,Android,我正在创建一个计算器应用程序,以便熟悉Java(刚刚开始学习)和Android SDK。我有一个关于内存使用的问题。每当我点击“=”按钮时,每次点击内存都会增加约0.03 MB(即使在结果变量读取“Infinity”之后)。当我达到堆限制时,它会下降大约8MB。在=按钮上调用的方法如下: public double calculate() { switch(_op) { case '/': result = _firstnum / _secondn

我正在创建一个计算器应用程序,以便熟悉Java(刚刚开始学习)和Android SDK。我有一个关于内存使用的问题。每当我点击“=”按钮时,每次点击内存都会增加约0.03 MB(即使在结果变量读取“Infinity”之后)。当我达到堆限制时,它会下降大约8MB。在=按钮上调用的方法如下:

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开发(一般来说是移动开发)都是新手。我想知道幕后发生了什么,我觉得这有助于我更好地了解我所使用的环境。