看板 java 關於我們 聯絡資訊
※ 引述《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