公文素材库 首页

JVM原理读书笔记

时间:2020-07-13 08:28:06 网站:公文素材库

  jvm是java virtual machine的英文缩写,中文名:java虚拟机。它的作用是java程序(.class文件)和硬件系统的接口,也就是将.class文件字节码解释成CPU可调用计算机指令,以此保证了java程序平台无关性。jvm它主要由类加载器(Class Loader)、执行引擎(Excution Engine)及java数据区(Runtime Data Area)三部分组成,引用一张官方图如下:

  一)类加载器(Class loader)主要作用是将.class文件加载到运行时数据区(Runtime Data Area)。

  Java类的加载分为两种方式:

  1)隐式加载,所有通过new生成的类对象实例;

  2)显式加载,Class.formName()动态加载;

  Java类的加载过程可以分为五步:

  1)载入,读入.class文件,创建class对象;

  2)验证,检验.class文件字节流里信息符合当前vm的基本要求(比如版本)、安全性(检验字节流不会损害vm)

  3)分配类对像的内存,对基本类型数据分配Stack,并对final和staic类型的变量初始化0;

  4)解析类,包括类字段、类方法、类接口;

  5)初始化,执行超类初始化,以及类里静态变量、静态方法、字段默认值初始化。

  二)运行数据区域,运行数据区域主要由PC计数器、方法区域、堆内存、Java虚拟机栈和本地方法栈,引用如下图:

  1)PC计数器是一块较小内存,属于线程私有,可以看作是当前线程执行的字节码行号指示器;在java多线程中,每个线程都有一个PC,以便完成不同线程的上下文环境切换;

  2)Java虚拟机栈,和PC计数器一样,属于线程私用,记录线程的局部变量、操作数栈;

  3)本地方法栈和Java虚拟机栈相似,Java虚拟机栈是为虚拟机方法服务,本地方法栈则是为本地方法服务;

  4)堆内存是线程公共内存,在jvm启动时创建,用于存放所有实例对像和数组值;

  5)方法区域,也和堆内存一样,是所有线程公共区域,记录了类的常量、成员变量、方法数据

  三)执行引擎由JIT编译器和垃圾回收器GC组成。垃圾回收器是一个优先级较低的守护线程,该线程的运行优先级会随着内存消耗不断提高。垃圾回收器只会收集通过new出来对像,它采用的策略是根据对像最近被使用的时间作为依据对对像实例进行分代,对不同分代采用不同策略。JVM中对象引用分为四种类型:1)强引用(比如new一个实例),默认情况下,对像引用都采用强引用;2)软引用,内存不足时会被回收,多数情况在本地缓存时会用到软引用;3)弱引用,一定会被回收;4)虚引用,一定会被回收。


  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


JVM原理读书笔记
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/798750.html
相关阅读
最近更新
推荐专题