我正在學習jvm的內幕,我讀了this文章。雖然閱讀我有一個疑問,即 當局部變量堆棧被創建?如果地方在運行時創建的變量堆棧將這個,超級關鍵字指向實物或者,如果局部變量棧在編譯時創建的,這是如何,超關鍵字內部運作的?當局部變量堆棧被創建?
1
A
回答
2
當局部變量堆棧被創建?
javac
javac
將本地變量分配給棧中的字節碼。這種分配是名義上的,實際機器中的實際分配可能會非常不同。
在JIT
已經優化了代碼之後,可以內聯局部變量和方法本身,在這種情況下,在理想情況下什麼都不會發生。
如果在運行時創建的局部變量堆棧將這個,超關鍵字指向實物
沒有super
在運行時。只有當前對象可用,例如代表this
的對象以及可以對其調用的方法。當你使用super
時,你所指的是父類中的方法,而不是當前的方法。
或者如果在編譯時創建局部變量堆棧,這個超級關鍵字在內部是如何工作的?
super
更改編譯器選擇調用的方法。一旦做出此選擇,將丟棄super
和this
之間的區別。
+0
謝謝彼得。 –
相關問題
- 1. 堆棧上的局部變量
- 2. 檢查堆棧上的局部變量
- 3. 方法局部變量和堆棧和堆
- 4. GDB:創建局部變量?
- 5. 堆棧變量
- 6. 如何創建全局導航堆棧?
- 7. 超出範圍時堆棧上的局部變量未被刪除
- 8. IL無堆棧變量的堆棧項的頂部複製
- 9. 爲什麼windows使用堆棧來存儲局部變量?
- 10. 堆棧中局部變量的GCC符號表
- 11. C++堆棧:未初始化的局部變量
- 12. C執行堆棧 - 局部變量分配
- 13. 編譯器如何在堆棧中安排局部變量?
- 14. 堆棧行爲返回一個指針到局部變量
- 15. 堆棧消費範圍的局部變量
- 16. JVM堆棧變量
- 17. 創建堆棧CREATE_IN_PROGRESS
- 18. 如何使用局部變量創建全局變量?
- 19. 字符串類型的局部變量存儲在堆棧或堆上?
- 20. 僅在Haml創建局部變量
- 21. 將對象創建爲局部變量
- 22. 迭代創建局部變量?
- 23. 局部變量 - 重新創建
- 24. 局部變量 - 與當地
- 25. 創建動態局部變量並將其傳遞給局部變量
- 26. 如何創建一個不同類型的變量的堆棧?
- 27. 爲調用堆棧創建最後一個變量
- 28. 用C++在堆或棧上創建變量
- 29. 通過創建本地變量減少堆棧指針
- 30. 堆棧變量在走?
虛擬地調用方法時虛擬地創建局部變量。然而,這些都是虛擬的,這可能意味着方法,甚至局部變量在代碼優化之後可能不存在,它完全是名義上的。 –
@RealSkeptic'this'在字節碼中始終是堆棧中的第0個變量。另一方面,'super'只是''這個''已被投入使用父類的方法。 –