gpt4 book ai didi

java - 内存分配,栈和堆

转载 作者:行者123 更新时间:2023-12-01 18:42:56 25 4
gpt4 key购买 nike

函数什么时候入栈?

就像,当它们编译时,每个函数都放在堆栈上,然后当对象调用它时,它会转到堆栈上的该函数?

或者

首先将 main 函数加载到堆栈中,然后在堆中分配对象,然后当对象调用函数时,它们被放入堆栈中,每次都将内存分配给堆栈上的本地变量?

静态方法也遵循相同的过程,就像普通函数一样,因为我听说它们只分配一次内存。

请帮助我确定该程序的哪个图形表示是正确的......

enter image description here

enter image description here

最佳答案

函数放入堆栈中。 call stack包含调用帧,当调用函数时,会推送新的调用帧。当函数返回时它被弹出。

调用帧通常还包含一些指向[调用]函数代码(即返回地址)的引用或指针,通常表示为 java bytecode

这是一种非常常见的情况,但并不普遍。请参阅旧 A.Appel 的Compiling with Continuations一书(描述没有任何堆栈的 SML/NJ 实现)。

关于java - 内存分配,栈和堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131582/

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