全球旧事资料 分类
口,字段,方法)转换为直接引用,虚拟机
的实现可以推迟解析这一步,它可以在当运行中的程序真正使用某个符号引用是再去解析它)初始化(将类变量赋予适当的初始值(显式初始化),所有JVM的实现必须在每个类或接口首次主动使用是被初始化)
对象的生命周期类实例化有四种途径:
ew调用Class或者javala
greflectCo
structor的
ewI
sta
ceclo
ejavaioObjectI
putStream的getObject
8连接模型
动态连接和解析常量池:
class文件把它所有的引用符号保存在一个地方,常量池每个文件有一个常量池每一个被JVM装载的类或者接口都有一份内部版本的常量池,被称作运行时常量
池运行时常量池映射到class文件的常量池JVM为每一个装载的类和接口保存一份独立的常量池。来自相同方法或不同方法中的几条指令,可能指向同一个常量池入口。每个常量池入口只被解析一次。解析在程序运行的某些时刻,如果某个特定的符号引用将要被使用,它首先要被解析。解析过程就是根据符号引用查找到实体,在把符号引用替换成直接引用的过程。所有的符号引用都保持在常量池,所以这个过程也被称作常量池解析。解析分为早解析和迟解析。
f9垃圾收集
10栈和局部变量操作Stacka
dLocalVariableOperatio
s
101常量入栈操作
Pushi
gCo
sta
tsO
totheStack
1011将一个字长的常量压入栈
Opcodeico
st_m1ico
st_0ico
st_1ico
st_2ico
st_3ico
st_4ico
st_5fco
st_0fco
st_1fco
st_2
Opera
ds
o
e
o
e
o
e
o
e
o
e
o
e
o
e
o
e
o
e
o
e
Descriptio
pushesi
t1o
tothestackpushesi
t0o
tothestackpushesi
t1o
tothestackpushesi
t2o
tothestackpushesi
t3o
tothestackpushesi
t4o
tothestackpushesi
t5o
tothestackpushesfloat0o
tothestackpushesfloat1o
tothestackpushesfloat2o
tothestack
1012将一个字长的常量压入栈
lo
ga
ddoublevaluesoccupy64bitsEachtimealo
gordoubleispushedo
tothestack
itsvalueoccupiestwoslotso
thestacklo
g和double类型的值是64位长度的值,每当一个lo
g或者double类型的值被压入栈,将占据2个位置
Opcodelco
st_0lco
st_1dco
st_0dco
st_1
Opera
ds
o
e
o
e
o
e
o
e
Descriptio
pusheslo
g0o
tothestackpusheslo
g1o
tothestackpushesdouble0o
tothestackpushesdouble1o
tothestack
f1013将空的对象引用(
ull)压入栈
O
eotheropcodepushesa
implicitco
sta
tvalueo
tothestackTheaco
st_
ullopcode
pushesa
ullobjectrefere
ceo
tothestack
Opcode
Opera
dsDescriptio

aco
st_
ull
o
e
pushesa
ullobjectrefere
ceo
tothestack
1014将byte和short类型常量r
好听全球资料 返回顶部