码迷,mamicode.com
首页 > 其他好文 > 详细

JVM加载.class文件的原理机制

时间:2017-07-01 01:02:47      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:准备   根据   博文   地址   loader   文件加载   bootstra   引导   应用   

当java编译器将.java文件编译成.class文件后,需要JVM执行.class文件,将class文件加载到内存中,从而对数据进行校验、解析和初始化。

1、类加载的一般过程

(1)寻找jre目录,寻找jvm.dll,并初始化JVM;

(2)产生一个Bootstrap Loader(启动类加载器);

(3)Bootstrap Loader自动加载Extended Loader(标准扩展类加载器),并将其父Loader设为Bootstrap Loader。

(4)Bootstrap Loader自动加载AppClass Loader(系统类加载器),并将其父Loader设为Extended Loader。

(5)最后由AppClass Loader加载HelloWorld类。

2、类加载器(次部分参考csdn一些博客)

类加载器(class loader)用来把Java 类动态的加载到 Java 虚拟机中。也就是说当程序需要某个类时,类加载器就把这个类的二进行加入到虚拟机中。

Java 中的类加载器大致可以分成两类,一类是系统提供的,另外一类则是由 Java 应用开发人员编写的。系统提供的类加载器主要有下面三个:

(1)引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader

(2)扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。

(3)系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。

3、加载类的过程

(1)装载:查找和导入Class文件;

(2)链接:执行校验、准备和解析步骤,其中解析步骤是可以选择的:

  a) 校验:检查载入Class文件数据的正确性;

  b) 准备:给类的静态变量分配存储空间;

  c) 解析:将符号引用转成直接引用;

(3)初始化:对类的静态变量、静态代码块执行初始化工作。

csdn一篇博文讲的很好,地址如下http://blog.csdn.net/ns_code/article/details/17881581,,学习不错的参考

JVM加载.class文件的原理机制

标签:准备   根据   博文   地址   loader   文件加载   bootstra   引导   应用   

原文地址:http://www.cnblogs.com/Javacxf/p/7100995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!