當創建對象並調用構造函數時,構造函數調用的存儲位置是什麼?它是堆棧還是堆?構造函數調用的存儲位置在哪裏?堆棧還是堆?
4
A
回答
1
堆僅用於存儲對象。沒有辦法在堆上調用構造函數。
它的調用是在堆棧上完成的。
堆棧用於方法調用。它用於創建方法堆棧。儘管構造函數不是一種方法。但是,您總是可以按照任何方法編寫任何邏輯或賦值。所以它像任何其他方法一樣在一個堆棧中實現。
4
構造函數調用的參數和局部變量存儲在堆棧中,直到構造函數返回。
構造函數創建的對象存儲在堆中。
1 - ...除非你有「逃脫分析」啓用,JIT編譯器可以判斷該對象可以在堆棧上安全地分配爲止。
1
在JVM對堆棧和堆
運行時數據區爲如下,
1)堆:存儲區域爲對象(一個每JVM實例)
2)Java堆棧:Storage是用於本地變量,中間操作結果(每個線程一個)
相關問題
- 1. 堆棧函數的實現在哪裏?
- 2. 創建線程對象在哪裏?堆棧還是堆?
- 3. 哪裏(正好)是調用堆棧?
- 4. 類的字段,它們是存儲在堆棧還是堆?
- 5. 堆棧上的構造函數
- 6. 存儲在堆棧或堆
- 7. 成員函數內存分配堆棧還是堆?
- 8. cin是堆棧還是堆棧?
- 9. 堆棧拷貝構造函數
- 10. 在函數中創建的對象,是保存在堆棧還是堆上?
- 11. const char *值將存儲在哪裏。什麼是堆棧崩潰和堆崩潰?
- 12. 在遞歸函數中存儲堆棧
- 13. 調用堆棧上大對象的構造函數
- 14. 堆vs堆棧存儲
- 15. 將堆棧結構存儲在堆vs棧上
- 16. 函數調用,堆棧
- 17. 堆棧內存位置
- 18. 在堆或堆棧中創建構造函數的區別是什麼?
- 19. 如何獲取函數在調用堆棧中的位置?
- 20. VISA在OSI堆棧上的位置在哪裏?
- 21. 哪種數據結構是堆棧?
- 22. C++是堆棧還是堆分配?
- 23. 全局聲明是堆棧還是堆?
- 24. 瞭解Haskell的`map` - 堆棧還是堆?
- 25. 功能調用時的堆棧存儲
- 26. 這個內存在哪裏分配 - 堆或堆棧?
- 27. 將函數的參數傳遞給堆棧還是寄存器?
- 28. Java-變量名稱或標識符在哪裏存儲,堆棧或堆?
- 29. 堆棧上的C++存儲保存在堆棧上
- 30. 構造函數調用了錯誤的「this」指針。這是堆棧腐敗?
有用讀:https://stackoverflow.com/questions/2826222/jvm-heap-and-stack/7597480#7597480 – Dez
調用構造函數就像調用一個稱爲特殊方法''它使用堆棧像任何其他方法。 –