JVM类加载机制详解-创新互联

创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!

创新互联长期为数千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为荔浦企业提供专业的做网站、网站设计荔浦网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

一、先看看编写出的代码的执行过程:

JVM类加载机制详解

二、研究类加载机制的意义

从上图可以看出,类加载是Java程序运行的第一步,研究类的加载有助于了解JVM执行过程,并指导开发者采取更有效的措施配合程序执行。

研究类加载机制的第二个目的是让程序能动态的控制类加载,比如热部署等,提高程序的灵活性和适应性。

三、类加载的一般过程

原理:双亲委托模式

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类。

四、类加载器的特点

1、运行一个程序时,总是由AppClass Loader(系统类加载器)开始加载指定的类。

2、在加载类时,每个类加载器会将加载任务上交给其父,如果其父找不到,再由自己去加载。

3、Bootstrap Loader(启动类加载器)是最顶级的类加载器了,其父加载器为null.

五、类加载器的获取

很容易,看下面例子

public class HelloWorld { 
   public static void main(String[] args) { 
     HelloWorld hello = new HelloWorld(); 
     Class c = hello.getClass(); 
     ClassLoader loader = c.getClassLoader(); 
     System.out.println(loader); 
     System.out.println(loader.getParent()); 
     System.out.println(loader.getParent().getParent()); 
   } 
}

标题名称:JVM类加载机制详解-创新互联
文章转载:http://myzitong.com/article/ceojsg.html