我正在学习jvm的内部知识并阅读this文章。虽然阅读我有一个疑问,即 创建本地变量堆栈时如果本地变量堆栈在运行时创建此,超级关键字指向真实对象或者如果在编译时创建局部变量堆栈,这个超级关键字如何在内部工作?
答案 0 :(得分:2)
何时创建局部变量堆栈?
articles.sdf
以字节代码将局部变量分配给堆栈。这种分配是名义上的,实际机器中的实际分配可能非常不同。
在javac
优化代码之后,可以内联局部变量和方法本身,在这种情况下,在理想情况下没有任何事情发生。
如果在运行时创建局部变量堆栈,超级关键字指向真实对象
运行时没有JIT
。只有当前对象可用,例如代表super
的对象以及可以调用它们的方法。当您使用this
时,您指的是父类中的方法而不是当前方法。
或者,如果在编译时创建局部变量堆栈,那么超级关键字如何在内部工作?
super
更改编译器选择调用的方法。完成此选择后,将忽略super
和super
之间的区别。