我现在正在学习java 我陷入了对象和局部变量的内存分配。 任何人都可以说明或澄清我的一些疑惑吗?
由于 MAHAVEER
答案 0 :(得分:42)
每个帖子都有自己的堆栈。
new
时,都会在堆上创建对象。int
)和引用到创建的任何对象。 实际对象本身不是在堆栈上创建的,正如我在使用 new
时提到的那样,它们将在堆上创建。 我有问题,天气会为每个人创建一个新的STACK 方法??
调用方法时使用相同的堆栈。一个方法将在堆栈上创建它自己的小部分,称为“堆栈帧”,用于保存它的局部变量。
它就像一堆板,当一个方法被称为一个板被添加到堆栈的顶部(堆栈框架),并且当该方法结束时,板被从堆。所有该方法的局部变量都将随之被销毁,但使用new
创建的实际对象则不会。
当JVM的垃圾收集器看到你不再需要它时,它会照看堆上的对象(用new
创建的那个)。< / p>
答案 1 :(得分:16)
堆栈与一对一映射中的线程相关联。堆栈绝对不与方法和类相关联。
推理所有这些的方法是,方法的局部变量对于该方法的每次调用都是 private 。
答案 2 :(得分:0)
当然,java垃圾收集器总是处理Heap,当它有机会被执行时,所以它只查找孤立对象并将它们擦掉,这就是为什么java中的NEW关键字总是在堆内存上创建新对象的原因。