技术文章 > java >  java基础 > 正文

java之JVM各类机制整理

小妮浅浅

在我们讨论java的基础部分时,大家都有用过jdk这个工具包,同时还会讲到另一个重要概念jvm。从名称上我们翻译一下,就是虚拟的计算机。对于jvm模块的内容比较难懂,所以我们可以先从它的一些机制入手:类加载双亲委派全盘负责委托机制。下面就这些机制分别带来讲解。

1.类加载机制

分为加载、验证 、准备 、解析 、初始化、 使用 、卸载。

1)加载

在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象 等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 。

2)验证

校验字节码文件的正确性

3)准备

给类的静态变量分配内存,并赋予默认值

4)解析

将符号引用替换为直接引用,该阶段会把一些静态方法(符号引用,比如main()方法)替换为指向数据 所存内存的指针或句柄等(直接引用),这是所谓的静态链接过程(类加载期间完成),动态链接是在程 序运行期间完成的将符号引用替换为直接引用,下节课会讲到动态链接 。

5)初始化

2.双亲委派机制

对类的静态变量初始化为指定的值,执行静态代码块。

应用程序类加载器AppClassLoader加载类的双亲委派机制源码,AppClassLoader的loadClass方法最终会调用其父类ClassLoader的loadClass方法,该方法的大体逻辑如下:

首先,检查一下指定名称的类是否已经加载过,如果加载过了,就不需要再加载,直接返回。

如果此类没有加载过,那么,再判断一下是否有父加载器;如果有父加载器,则由父加载器加载(即调用parent.loadClass(name, false);)。或者是调用bootstrap类加载器来加载。

如果父加载器及bootstrap类加载器都没有找到指定的类,那么调用当前类加载器的findClass方法来完成类加载。

3.全盘负责委托机制

“全盘负责”是指当一个ClassLoder装载一个类时,除非显示的使用另外一个ClassLoder,该类所依赖及引用的类也由这个ClassLoder载入。

以上就是java之JVM各类机制整理,前两种机制有点类似父类和子类,当类加载机制无法处理时,就会交给双亲委派机制。大家看完本篇后,要加强内容方面的理解。

免费视频教程
本教程部分素材来源于网络,版权问题联系站长!
相关文章
  java基础中JRE、JDK、JVM是什么?
  java中jdk的安装
  java之jdk环境的设置方法
  java的jdk是什么
  java迭代器的基本概念
  java迭代器iterator是什么意思
  java迭代器原理分析
  java迭代器中删除元素的操作
相关视频章节
  什么是tkinter窗口
  例子3 登录窗口
  例子2 登录窗口
  例子1 登录窗口
  pack grid place 放置位置
作者信息

小妮浅浅

认证0级讲师

最近文章
python在协程中增加任务 440
python pyg2plot的原理 345
python中pyg2plot如何使用? 155
推荐视频
视频教程分类