码迷,mamicode.com
首页 > 编程语言 > 详细

Java基础:类加载机制

时间:2017-08-30 19:59:48      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:不同   内存模型   alt   class   www.   jpg   nbsp   编译   hand   

  之前的《java基础:内存模型》当中,我们大体了解了在java当中,不同类型的信息,都存放于java当中哪个部位当中,那么有了对于堆、栈、方法区、的基本理解以后,今天我们来好好剖析一下,java当中的类加载机制(其实就是在美团的二面的时候,被面试官问的懵逼了,特地来总结一下,免得下次再那么丢人 T-T)。

  我们都知道,在java语言当中,猴子们写的程序,都会首先被编译器编译成为.class文件(又称字节码文件),而这个.class文件(字节码文件)中描述了类的各种信息,字节码文件格式主要分为两部分:常量池和方法字节码。那么java的编译器生成了这些.class文件之后,又是怎么将它们加载到虚拟机当中的呢?接下来我们就好好讨论一下这个事情。

  参考连接:http://www.cnblogs.com/xrq730/p/4844915.html  (感觉这个博主写的很适合greenHand看,所以就参考着自己总结了一份)

类的生命周期:

  首先我们来看看,在java当中一个类的完整的生命周期,主要包括了以下七个部分:1.加载、2.验证、3.准备、4.解析、5.初始化、6.使用、7.卸载。在这7个阶段当中,前5个阶段加起来,就是类加载的全

技术分享

过程,如图所示。而验证、准备、解析,三个阶段又可以被称为连接阶段。除此之外,类加载过程当中的五个阶段,除了解析阶段,其他都是顺序开始的,但不是顺序执行的,也就是说在过程当中是可以并行的,比如在验证开始后,还未结束,可能就会开始准备阶段。而解析阶段不一定在这个顺序当中的原因是因为,它在某些情况下可以初始化阶段之后在开始,这是为了支持Java语言的运行时绑定(也称为动态绑定)。

注意:这里出现了一个新概念,叫绑定,简单解释了一下什么叫绑定吧,在java当中的绑定定义为:指的是把一个方法的调用与方法所在的类(方法主体)关联起来,主要分为了静态绑定和动态绑定。

静态绑定:即在程序执行方法之前就已经被绑定,简单来说再编译期就进行绑定,在java当中被final、static、private修饰的方法,以及构造方法都是属于静态绑定,即编译期绑定。

动态绑定:又称运行时绑定,在运行时根据具体对象的类型进行绑定,在java当中,几乎除了满足静态绑定的方法之外,所有方法都是动态绑定的(java当中运行时多态的重要实现根据)

 

Java基础:类加载机制

标签:不同   内存模型   alt   class   www.   jpg   nbsp   编译   hand   

原文地址:http://www.cnblogs.com/WellHold/p/7454770.html

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