JVM --结构与运行

来源:互联网 发布:知福茶叶怎么样 编辑:程序博客网 时间:2024/05/17 23:08
一  JVM结构:

   JVM包括:类加载子系统,内存空间,垃圾回收器,PC寄存器四部分。
   首先我们来简单说一下这几部分:
  PC寄存器:PC寄存器是属于线程级别的,在线程创建时创建,指向下一条指令的地址,在执行本地方法的时候PC值为undefined。这个和我们系统的PC计数器功能很相似,只不过PC寄存器管理的开发程序运行,而PC计算器管理的是系统软件运行。
垃圾收集器:说到垃圾收集器我们不得不说的就是GC算法,也就是垃圾回收机制是按照怎样的算法回收垃圾的。关于垃圾回收机制这里就不做详细解释了,下来会有相关的分析。
类加载器子系统: 这个就是我们的类怎么进入到JVM了,就是通过类加载器来加载进入JVM中。
内存空间:在这里有新的划分,包括,本地方法栈,java栈,java堆,方法区。
java堆:所有对象都保存在java堆中(所有new出来的对象都保存在java堆中),所有线程共享java堆。并且java堆分为新生代和老年代。新生代进一步划分为Eden、From Survivor、To Survivor。
java栈:和java堆整好相反,他是线程私有的,放的是方法的局部变量、操作数栈、常量池指针。总而言之他保存的是参数和局部变量,并放在一张局部变量表里面。而我们所说的内存泄漏是不包含java栈的。
方法区:大家看到名字可能首先想到的是这里保存的是方法类,其实不是,它保存的是类的信息,对类型进行的描述,包括了类型的常量池,字段方法信息,方法字节码。它与永久区相连,保存一些相对静止相对稳定的信息。
本地方法栈:为虚拟机使用到的Native方法服务。
二 JVM启动流程

JVM启动流程:通过当前路径和系统版本寻找JVM的配置文件,然后找到JVM.dll文件,然后通过JVM.dll 文件从初始化获取JVM接口,最后找到main方法并运行。在我们的开发程序运行的时候首先启动的是JVM,JVM启动之后通过类加载器将我们开发的方法加载进入,通过Java 栈来管理变量,通过java堆来管理对象,垃圾回收机制通过GC算法来回收无用的资源,当对象经过多次回收仍然存在,将会进入老年代。
0 0
原创粉丝点击