作者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)
1F:推 akaing:抱歉我没表达好 我的优於纯粹说先後而已 01/06 05:29
2F:→ akaing:所指的static fields 是括号内的动作没错 01/06 05:31
3F:→ akaing:那这样是照读入code的Texual-order来配置了吗? 01/06 05:33
4F:推 akaing:就Initialization的部份了解了,感谢解惑! 01/06 05:37
5F:→ sbrhsieh:JVM spec. 中没有 Textual Order 的概念。 01/06 14:49
6F:推 akaing:ok 那这部份个人先不定义了,感谢。 01/06 17:20