Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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_Memory Management_Jvm_Stack - Fatal编程技术网

Java 方法区域和堆栈之间的差异

Java 方法区域和堆栈之间的差异,java,memory-management,jvm,stack,Java,Memory Management,Jvm,Stack,在这本书和其他许多书中,它说: 方法区域是非堆内存的一部分。它按类存储 结构、方法和构造函数的代码。每班结构 表示运行时常量和静态字段 这对我来说相当混乱,因为我刚刚读到堆栈内存由堆栈帧组成,其中每个帧包含方法信息,例如给定方法的局部变量和方法参数 那么,方法区域内存和堆栈内存空间之间有什么区别(除了第一个是在所有线程之间共享的,而后者是基于线程的) 方法区域包含“运行时常量和静态字段”。堆栈框架“包含局部变量和方法参数等方法信息”。前者是不变的(除非你的静态场是可变的,抖动);后者在每个方法调

在这本书和其他许多书中,它说:

方法区域是非堆内存的一部分。它按类存储 结构、方法和构造函数的代码。每班结构 表示运行时常量和静态字段

这对我来说相当混乱,因为我刚刚读到堆栈内存由堆栈帧组成,其中每个帧包含方法信息,例如给定方法的局部变量和方法参数


那么,方法区域内存和堆栈内存空间之间有什么区别(除了第一个是在所有线程之间共享的,而后者是基于线程的)

方法区域包含“运行时常量和静态字段”。堆栈框架“包含局部变量和方法参数等方法信息”。前者是不变的(除非你的静态场是可变的,抖动);后者在每个方法调用中是不同的。@AndyTurner在哪里存储了一个类方法引用(谈论java 8+)?不清楚为什么您认为“方法区域”和“堆栈内存空间”有任何共同之处。问两件没有共同点的东西之间的区别是没有意义的。“空气”和“时间”的区别是什么?我必须进一步阅读。现在我有了一个更清晰的概念。方法区域包含“运行时常量和静态字段”。堆栈框架“包含局部变量和方法参数等方法信息”。前者是不变的(除非你的静态场是可变的,抖动);后者在每个方法调用中是不同的。@AndyTurner在哪里存储了一个类方法引用(谈论java 8+)?不清楚为什么您认为“方法区域”和“堆栈内存空间”有任何共同之处。问两件没有共同点的东西之间的区别是没有意义的。“空气”和“时间”的区别是什么?我必须进一步阅读。我现在有了更清楚的想法。