何时创建局部变量堆栈?

When local variable stack gets created?

我正在学习 jvm 的内部原理,并且阅读了 this 文章。阅读时我有一个疑问,即 何时创建局部变量堆栈? 如果在 运行 时创建的 局部变量堆栈 this, super关键字指向真实对象或者如果局部变量堆栈是在编译时创建的,那么super关键字在内部是如何工作的?

When local variable stack get created ?

javac以字节码的形式将局部变量分配到栈中。此分配是名义上的,实际机器中的实际分配可能会有很大不同。

JIT优化代码后,局部变量和方法本身可以被内联,在这种情况下,理想情况下什么也不会发生。

If local variable stack created at run time will this, super keywords point real objects

运行时没有super。只有当前对象可用,例如代表 this 的对象和您可以调用它们的方法。当您使用 super 时,您指的是父 class 中的方法,而不是当前方法。

Or if local variable stack is created at compile time, how this, super keywords internally works?

super 更改编译器选择调用的方法。做出此选择后,superthis 之间的区别将被丢弃。