作者sbrhsieh (偶爾想擺爛一下)
看板java
標題Re: [問題] 關於static method 在class initializa …
時間Wed Jan 6 00:51:17 2010
※ 引述《akaing (平心靜氣談問題最難)》之銘言:
: 最近在自行研究Java的Initialization
: instance varible 和constructor 的情況大致上已經了解了.
: 現在是想針對.class檔在runtime時期初次讀入JVM(Class initialization的其中一種),
: 進行Loading Linking Initializing的過程中
: 1.static method 會在何時載入Ram,以及是載入在那種儲存裝置
: stack,heap,還是static storage中?
: 2.是優於static fields和static initializers的Initializing
: 還是早在其它階段就已完成。
第二點是指優於 static fields 的甚麼?(static field initializer?)
class initializer 與 static field initializer 是在 Initialization 階段
進行,而且這兩種 initializer 實際上是 static method,所以 static method
allocation 一定得在 Class Initialization 之前就進行。
static method allocation 比較合理的時機是介於 Verification 與
Class Initialization 之間,因為至少要驗證過 method bytecode 是合格的。
至於為 static field 與 static method 配置記憶體(與初始化記憶體內容)應該
是沒有一定要哪一個先。如果 method 要經過 JIT 編譯成 native code,或許
static field allocation 會早於 method allocation。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.134.151
※ 編輯: sbrhsieh 來自: 218.173.134.151 (01/06 01:20)
推 akaing:抱歉我沒表達好 我的優於純粹說先後而已 01/06 05:29
→ akaing:所指的static fields 是括號內的動作沒錯 01/06 05:31
→ akaing:那這樣是照讀入code的Texual-order來配置了嗎? 01/06 05:33
推 akaing:就Initialization的部份了解了,感謝解惑! 01/06 05:37
→ sbrhsieh:JVM spec. 中沒有 Textual Order 的概念。 01/06 14:49
推 akaing:ok 那這部份個人先不定義了,感謝。 01/06 17:20