每天学一点:java虚拟机2

虚拟机中每个对象都有一个对象锁,用于协调多线程访问同一个对象时的同步。
除了锁,每个java对象逻辑上还与实现等待集合的数据相关联,等待集合是用来让多个线程为完成同一个共同目标二协调工作的。,由等待方法(从object那里继承的三个名为wait()的重载方法)和通知方法(notify()和notifyAll())联合使用。

程序计数器
PC寄存器的大小是一个字长,他既能够持有以个本地指针,也能够持有一个returnAddress。当线程执行一个本地方法是,PC寄存器的值是“undefined”

java栈
新线程启动时,java虚拟机会分配一个java栈。
虚拟机知会直接对java栈执行两种操作:以帧为单位的压栈或出栈。
每当线程调用一个java方法时,都会有个新帧压入栈,在执行这个方法时,使用这个帧来存储参数、局部变量、中间运算结果等;
无论java方法是正常返回还是抛出异常返回,虚拟机都会从栈上弹出当前帧;

帧栈由三部分组成:局部变量区、操作数栈、帧数据区。
局部变量区、操作数栈大小有具体方法而定,按字长计算,编译时就确定了这些值并放在class文件中,帧数据区大小依赖具体实现。

猜你喜欢

转载自baoxiaofei.iteye.com/blog/2272015