JVM --结构与运行
Posted wangdan1030
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM --结构与运行相关的知识,希望对你有一定的参考价值。
一 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算法来回收无用的资源,当对象经过多次回收仍然存在,将会进入老年代。
以上是关于JVM --结构与运行的主要内容,如果未能解决你的问题,请参考以下文章