gpt4 book ai didi

Java引用存储问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:30:49 26 4
gpt4 key购买 nike

在 Java 中,当您将一个对象作为参数传递给方法时,它实际上是传递一个对该对象的引用或指针,因为 Java 中的对象是引用。

在函数内部,它有一个指向该对象的指针,该对象是内存中的一个位置。我想知道这个指针在内存中的位置?是否在函数内部创建了一个新的内存位置来保存这个引用?

最佳答案

在函数中,参数引用存储在堆栈中。引用的事物可以存在于任何地方。

当某些代码调用方法时,通常会在执行线程的堆栈上创建空间,该空间用于保存传递给函数的参数。如果其中一个参数“是一个对象”,那么真正起作用的是对对象的引用;该引用被复制到堆栈上,以便被调用的代码可以找到它。重要的是要认识到对象本身没有被复制,只是引用。

被调用代码的序言部分通常会在堆栈上分配更多空间,用于方法自己的局部变量,但在下面,JVM 有一个指向包含所有参数的堆栈帧的指针,因此被调用的代码可以定位到参数命名的对象。使用“new”创建的项目将从堆中分配,即使在方法退出后也可以保留,但只需将堆栈指针移回调用前的位置,即可转储分配在堆栈上的所有项目。

关于Java引用存储问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2888888/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com