`
中国爪哇程序员
  • 浏览: 165028 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ClassLoader

    博客分类:
  • java
阅读更多
类的加载:
指把类的.class文件中的二进制数据读入内存中,把它存放在运行时数据区的方法区内,然后 在在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。

类加载器并不需要等到某个类被告“首次主动使用”时再加载它,虚拟机允许类加载器在预料某个类将要调用前预前加载它。如果预先加载过程中遇到.class文件缺失或者存在错误,只有调用时才会抛出错误,如果未被调用,则不会报错。

java可以从多种途径加载类的二进制数据
(1)网络下载的.class
(2)zip,jar包
(3)java源文件编译后的.class

类的加载器可分为两种:
(1)Jvm自带的三类加载器
(2)用户户自定义的加载器

JVM自带的三个加载器
(1)根类加载器:该加载器没有父类,负责加载核心类库。如java.lang.*。它具体加载的jar包,请见System.getProperties()中的sun.boot.library.path=e:\jdk1.5.0\jre\bin

(2) 扩展类加载器:它的父加载器为根类加载器。所加载的内容见系统属性:java.ext.dirs或者从JDK的安装上当的jre\lib\ext目录和扩展目录下加载类库
(3) 系统类加载器:也称应用类加载器.它从环境变量classpath或者系统属性java.class.path所指定的目录加载类。它是用户自定义的类加载器的默认父类加载器。系统类加载器是纯java类,是java.lang.ClassLoader的子类.


执行javac  Dog.java文件,生成class文件。然后使用javap -verbose Dog反编译出class代码。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics