Memory management 对象方法存储在堆栈或堆中?

Memory management 对象方法存储在堆栈或堆中?,memory-management,stack,heap-memory,Memory Management,Stack,Heap Memory,堆对象内部的方法会发生什么变化? 因此,我一直在阅读有关堆栈和堆内存管理的内容 方法和变量(方法内部)存储在堆栈中 对象和实例变量存储在堆中 当在堆栈方法内调用对象时,它有一个指向heap对象的指针 我假设这些方法存储在堆栈上,因为“方法存储在堆栈上”。但我无法找到关于这一点的证实。例如,构造函数会发生什么情况 我看到的文章或教程视频只给出了主类中方法的示例 有人能回答这个问题吗?将根据它在Java中的工作原理进行解释 方法和变量(方法内部)存储在堆栈中 局部变量(方法中的变量)存储在堆栈中

堆对象内部的方法会发生什么变化?

因此,我一直在阅读有关堆栈和堆内存管理的内容

  • 方法和变量(方法内部)存储在堆栈中
  • 对象和实例变量存储在堆中
  • 当在堆栈方法内调用对象时,它有一个指向heap对象的指针
我假设这些方法存储在堆栈上,因为“方法存储在堆栈上”。但我无法找到关于这一点的证实。例如,构造函数会发生什么情况

我看到的文章或教程视频只给出了主类中方法的示例


有人能回答这个问题吗?

将根据它在Java中的工作原理进行解释

方法和变量(方法内部)存储在堆栈中

局部变量(方法中的变量)存储在堆栈中。但不是方法本身

通过方法,我们引用需要执行的行为或指令列表。这不会改变每个方法调用,甚至不会改变创建的每个对象实例。这种行为在班级层面上保持不变

该行为存储在一个名为“方法区域”的区域中。有关更多详细信息,请参阅

按照规范

方法区域是在虚拟机启动时创建的。尽管方法区域在逻辑上是堆的一部分,但简单的实现可能选择不进行垃圾收集或压缩。此版本的Java虚拟机规范不强制要求方法区域的位置或用于管理已编译代码的策略

方法区域所在的位置留给JVM实现。
在Java7之前,HotSpot VM等实现都用于将方法区域存储为堆的一部分。但从Java8开始,它被移出堆,并且为堆分配的空间不会被方法区域占用

例如,构造函数会发生什么情况

构造是具有特殊名称的方法,
。。它们的存储方式与其他方法相同。

作为旁注,有一个名为
的类初始化方法,用于处理类中的静态块。

非常感谢:)