JVM

一、jvm组成

JVM由4大部分组成:ClassLoader,Runtime Data Area,Execution Engine,Native Interface

二、介绍

2.1 Classloader(类加载器)

ClassLoader(类加载器)是负责加载class文件,class文件在文件开头有特定的文件标示,并且ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定。

Java语言系统自带有三个类加载器:

Bootstrap ClassLoader 最顶层的加载类,主要加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等。另外需要注意的是可以通过启动jvm时指定-Xbootclasspath和路径来

改变Bootstrap ClassLoader的加载目录。比如java -Xbootclasspath/a:path被指定的文件追加到默认的bootstrap路径中。我们可以打开我的电脑,在上面的目录下查看,看看这些jar包是不是存在于这个目录。

Extention ClassLoader 扩展的类加载器,加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件。还可以加载-D java.ext.dirs选项指定的目录。

Appclass Loader也称为SystemAppClass 加载当前应用的classpath的所有类。

加载器执行顺序 :1.Bootstrap CLassloder  2.Extention ClassLoader 3.AppClassLoader

双亲委派模型:

类是在运行期间第一次使用时动态加载的,而不是一次性加载。因为如果一次性加载,那么会占用很多的内存。

类的生命周期:

 包括以下 7 个阶段:

加载(Loading)

验证(Verification)

准备(Preparation)

解析(Resolution)

初始化(Initialization)

使用(Using)

卸载(Unloading)

2.2 Native Interface

Native Interface是负责调用本地接口的。他的作用是调用不同语言的接口给JAVA用,他会在Native Method Stack中记录对应的本地方法,然后调用该方法时就通过Execution Engine加载对应的本地lib。原本多于用一些专业领域,如JAVA驱动,地图制作引擎等,现在关于这种本地方法接口的调用已经被类似于Socket通信,WebService等方式取代。

2.3 Execution Engine

 Execution Engine是执行引擎,也叫Interpreter。Class文件被加载后,会把指令和数据信息放入内存中,Execution Engine则负责把这些命令解释给操作系统。

2.4 Runtime Data Area

Runtime Data Area则是存放数据的,分为五部分:Stack,Heap,Method Area,PC Register,Native Method Stack。几乎所有的关于java内存方面的问题,都是集中在这块

java虚拟机栈: 每个 Java 方法在执行的同时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息。从方法调用直至执行完成的过程,就对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程。通过-Xss来设置其大小

堆: 所有对象都在这里分配内存,是垃圾收集的主要区域("GC 堆")。分为Young Generation和Old Generation(也叫Tenured Generation)两大部分。Young Generation分为Eden和Survivor,Survivor又分为From Space和 ToSpace。通过-Xms和-Xmx来指定最小值和最大值

三、垃圾回收 

 判断一个对象是否可被回收?

 (1)引用计数算法

 (2)可达性算法 :以 GC Roots 为起始点进行搜索,可达的对象都是存活的,不可达的对象可被回收。(java虚拟机使用)

      GC Roots 一般包含以下内容:

虚拟机栈中局部变量表中引用的对象

本地方法栈中 JNI 中引用的对象

方法区中类静态属性引用的对象

方法区中的常量引用的对象

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 早上有个学习讲座,联系了几个同事,她们都说不去。我也不想去,又怕去的人少了,负责人一生气要点名,所以还是勉...
    爱与感赏阅读 308评论 0 5
  • 这前几个星期是我奶奶的生日,我已经盼了很长时间了,在刚进入初一就开始盼望过上奶奶的生日,我可算盼来了奶奶的,...
    五班贾文慧阅读 588评论 1 3
  • 前情回顾:来宝不声不响地收拾好行李,并带上八百块钱在天蒙蒙亮的时候悄悄去车站了。 上一章 不辞而别 第一百三十一...
    显山露水阅读 2,308评论 23 34
  • 天还未黑透,暮霭不很深沉,站在六川河观景台放眼望去,远处的山头像很多个馒头一样一个连着一个,挤挤挨挨重重叠叠。她叫...
    七月紫苏阅读 304评论 0 0