Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 什么时候为函数中的局部变量分配内存?_Java - Fatal编程技术网

Java 什么时候为函数中的局部变量分配内存?

Java 什么时候为函数中的局部变量分配内存?,java,Java,我知道为函数和静态成员分配的内存只执行一次,每次创建新对象时,类变量都会被赋予新的内存空间 在下面的问题中使用new操作符后,我将得到类变量的8个字节。但是,intc的内存是什么时候分配的?在编译期间 class A { int a,b; void show() { int c; } public static void main(String...s) { new A().show(); } } 函数

我知道为函数和
静态
成员分配的内存只执行一次,每次创建新对象时,类变量都会被赋予新的内存空间

在下面的问题中使用
new
操作符后,我将得到类变量的8个字节。但是,
intc
的内存是什么时候分配的?在编译期间

class A
{
    int a,b;

    void show()
    {
        int c;
    }

    public static void main(String...s)
    {
        new A().show();
    }
}

函数局部变量的内存在每次调用函数时在堆栈上分配。

函数局部变量的内存在每次调用函数时在堆栈上分配。

方法调用和局部变量存储在堆栈上。对象(包含实例变量)存储在堆上。因此,使用以下方法创建对象:

new A()
调用方法时,将在堆栈上创建存储在堆栈上的
show
method局部变量
c

只需查看此图,即可了解有关Java中堆栈和堆内存管理的更多信息:


方法调用和局部变量存储在堆栈上。对象(包含实例变量)存储在堆上。因此,使用以下方法创建对象:

new A()
调用方法时,将在堆栈上创建存储在堆栈上的
show
method局部变量
c

只需查看此图,即可了解有关Java中堆栈和堆内存管理的更多信息:



本地变量在堆栈上是本地分配的。你能帮我一个链接吗?比你想知道的还要多:嗯,我认为你真正需要的是关于编程的东西,而不是java内存管理的东西。本地变量在堆栈上是本地分配的。你能帮我一个链接吗?比你想知道的还要多:嗯,我认为您真正需要的是关于编程的东西,而不是java内存管理blahblah。所以每次新内存分配给本地变量时?我认为内存只分配给函数及其变量一次!快速浏览一下,这个页面看起来很有希望:男人考试从周一开始,所有这些诱人的话题我现在正在挖掘!因此,每次堆栈上都会为局部变量分配内存。但是对于静态函数和变量,应该有一个固定的空间ryt?静态函数的工作原理与普通函数相同,只是它们在类上而不是实例上运行-这意味着引用的成员只能是静态成员,不能是实例成员(因为在静态方法调用时没有已知的实例).静态变量只分配一次-当类加载时,这是正确的。所以每次新内存分配给本地变量?我以为内存只分配给函数及其变量一次!快速看一下,这个页面看起来很有希望:man考试从周一开始,所有这些诱人的主题我现在正在挖掘!所以每次都会为堆栈上的局部变量分配内存。但是对于静态函数和变量,应该有一个固定的空间ryt?静态函数的工作方式与普通函数相同,只是它们在类上而不是实例上操作-这意味着引用的成员只能是静态成员,而不是实例成员(因为在静态方法调用时没有已知的实例)。静态变量只分配一次-当类被加载时,这是正确的。有帮助的…:D现在请对此进行解释-一旦first()被放到堆栈上,(这发生在编译时对吗?)如果我们再次调用first(),那么新的内存将被分配给first(),或者这只是对其他地方固定内存位置的函数调用吗?有帮助的…:D现在请对此进行解释-一旦first()被放入堆栈中,(这会在编译时发生,对吗?)。然后将内存分配给它。如果我们再次调用first,则新内存将分配给first(),或者这只是对其他位置的固定内存位置的函数调用?