java 虚拟机

来源:互联网 发布:前端面向对象编程 编辑:程序博客网 时间:2024/06/06 03:55
方法区:这里面放类信息(常量,静态方法)。
堆:这里面放对象,也就是类实例(变量)。
栈:每个线程都有自己的计数器(pc 寄存器)+栈,线程里面放的是栈帧队列。
栈帧:这里面是java方法和(局部变量,中间运算结果,参数)。
栈里面是栈帧一个栈帧是一个java方法的状态。方法返回,栈帧被栈丢弃。


多线程状态下:对象锁定,线程等待通知。两种方法实现同步。
多线程状态下:每个线程都有一个工作内存,线程用它保存"赋值变量"的"工作拷贝".
多线程状态下:把变量值从主存拷贝到工作内存。完事,从工作内存写回主存。



听听这段绕口的:
某个线程正在执行的方法叫线程的当前方法,当前方法使用的栈帧成为当前栈。当前方法所属的类称为当前类,当前类的常量池称为当前常量池,线程执行一个方法的时候,它会跟踪 当前类和当前常量池,当虚拟机遇到栈内操作指令,它对当前帧数据执行操作,存储(局部变量,中间运算结果,参数),方法完成,return 返回,或是抛出异常,中止,当前栈帧弹出,上一个方法成为当前栈。