JVM

来源:互联网 发布:sublimetext3 mac 编辑:程序博客网 时间:2024/05/22 13:18

JVM内幕:java虚拟机详解

这篇文章解释了java虚拟机(JVM的内部架构),下图显示了遵守java SE 7规范的典型的JVM核心内部组建

stack  -----------Non Heap---------------Heap


上图显示的组件分两个章节解释。

第一章讨论针对每个线程创建的组件,第二个章节讨论了线程无关组件

线程:

JVM系统线程

每个线程相关的

程序计数器


(((((((((((((((((((((((((((((((((((((((((((((((

1,程序存储器:

在计算机的主存储器中专门用来存放程序,子程序的一个区域


2,指令寄存器(IR):用来保存当前正在执行的一条指令。当执行一条指令时,先把他从内存读到数据集村器(DR)

中,然后再传送到IR。指令划分为操作码和地址码地段,由二进制数字组成。


通常一条指令包含两方面的内容:操作码和操作数

操作码决定要完成的操作

操作数指参加运算的数据以及所在的单元地址




3,程序计数器。

为了保证程序(在操作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址


4,地址寄存器


保存当前CPU所访问的内存单元的地址。


)))))))))))))))))))))))))))))))))))))))))))))0


  • 线程
    • JVM 系统线程
    • 每个线程相关的
    • 程序计数器
    • 本地栈
    • 栈限制
    • 栈帧
    • 局部变量数组
    • 操作数栈
    • 动态链接
  • 线程共享
    • 内存管理
    • 非堆内存
    • 即时编译
    • 方法区
    • 类文件结构
    • 类加载器
    • 更快的类加载
    • 方法区在哪里
    • 类加载器参考
    • 运行时常量池
    • 异常表
    • 符号表
    • Interned 字符串


线程::::::::::::::::::::::

我们所说的线程指程序执行过程中的一个线程实体。JVM允许一个应用并发执行

多个线程。Hotspot JVM中的java线程与原生操作系统有直接的映射关系。


当线程本地存储,缓冲区分配,同步对象,栈,程序计数器等准备好以后,

就会创建一个操作系统原生线程。


线程本地存储

我们知道在一个进程中,所有线程是共享同一个地址空间的。

所以,如果一个变量是全局的或是静态的,那么所有线程访问的是同一分







=============================================================》》》》》


每一个java虚拟机都由一个类加载器子系统,负责加载程序中的类型(类和接口),并赋予唯一的名字。

每一个java虚拟机都有一个执行引擎,负责执行被加载类中包含的指令





程序的执行需要一定的内存空间,如字节码,被加载类的额外信息,程序中的对象,方法的参数,

返回值,本地变量,处理的中间变量等等