`
Tonyguxu
  • 浏览: 271700 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【Core Java】类加载

 
阅读更多

主要内容包括:

1.类加载 / 类连接 / 类初始化

2.类加载器

 

JVM进程

 

类的加载

类的class文件 (类的二进制数据)读入内存,并为之创建一个java.lang.Class对象。

写道
系统中的所有的类实际上也是对象(类加载时创建),都是java.lang.Class的实例

 

类加载由类加载器 完成,JVM会提供类加载器(系统类加载器),开发者也可以自定义。

通过使用不同类加载器,可以从以下来源加载类的class文件:

1.本地文件系统

2.JAR包

3.通过网络

4.把java源文件动态编译 ,加载

写道
Java虚拟机规范允许预加载类
 

类的连接

负责把加载到内存中的类的二进制数据合并到JRE中,类的连接又可分为三个阶段:

1.验证

2.准备:为类的静态属性分配内存,并设置默认初始值。

3.解析

类的初始化

类的初始化主要对静态属性进行初始化 。有两种方式:

1.声明时初始化

2.静态初始化块(static{ })中初始化

注1:在类连接阶段已经为静态属性分配好了内存,并使用默认值初始化了。在类初始化阶段是利用上面两种方式使用指定值初始化。

注2:对于上面两种初始化方式,JVM会按这些语句在程序中的排列顺序依次执行。

注3:静态初始化块与类相关,会在类初始化时被执行。通常用于对类的静态属性执行初始化操作。

 

JVM初始化一个类的步骤:

1.假如这个类还没有被加载和连接,程序先加载并连接该类

2.假如该类的直接父类还没有被初始化,则先初始化其直接父类(如果直接父类也没有初始化呢?)

3.假如类中有初始化语句,则系统依次执行这些初始化语句。

注:初始化一个类不仅仅是针对该类初始化,还包括该类的直接父类和间接父类,一直上溯到java.lang.Object.

初始化时,先初始化顶层父类,依次向下。

 

类初始化时机

 

类加载器

一个类被载入JVM中,同一个类就不会被再次载入。何为“同一个类”?

一个载入JVM的类都有一个唯一的标识:类全名+其类加载器。

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    达内Java培训-CoreJava全程笔记(WORD唐亮版)

    CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰符 26 CoreJava DAY08 常用类 29 CoreJava DAY09 高级语言特征 30 CoreJava DAY10 主方法,静态导入,包装类,枚举 32 CoreJava DAY11 内部...

    达内 CoreJava老师笔记汇总

    CoreJava DAY06 类的加载过程、实例化、继承、多态 37 CoreJava DAY07修饰符 50 CoreJava DAY08 常用类 56 CoreJava DAY09 高级语言特征 58 CoreJava DAY10 主方法,静态导入,包装类,枚举 62 CoreJava DAY11 内部...

    corejava基础重要知识点总结

    CLASSPATH:类加载器使用 让类加载器明确去哪里加载.class文件 通常不需要设置 默认值:. .:当前目录(.java) CLASSPATH相当于中国的低保制度 JAVA_HOME:其他的程序使用 WEB 设置方式: 1:一次性的设置 ...

    CoreJava笔记

    CoreJava DAY06 类的加载过程、实例化、继承、多态 20 CoreJava DAY07修饰符 26 CoreJava DAY08 常用类 29 CoreJava DAY09 高级语言特征 30 CoreJava DAY10 主方法,静态导入,包装类,枚举 32 CoreJava DAY11 内部...

    javacore和dump分析工具

    javacore.txt文件用jca打开,heapdump.phd文件用ha打开。...包括 Java 虚拟机的参数,环境变量,内存段的分配情况,垃圾回收日志,各种内部锁的状态,各线程在当前时刻的运行栈,以及类加载状态等。

    JCL:Jar Class Loader,一个可配置的动态自定义类加载器,旨在在IoC框架和Web应用程序中创建,管理和操作隔离的Java类加载器。

    JCL是可配置,动态和可扩展的自定义类加载器,可直接从Jar文件和其他来源加载Java类。 这样做的动机是创建隔离的类加载器,该类加载器可以轻松地与IoC框架(如Spring)和Web应用程序集成。 整个库,包括其代码库和...

    杰普学习corejava总结笔记

    类加载,同时初始化类中静态的属性(赋默认值) 2.执行静态代码块 3.分配内存空间,同时初始化非静态的属性(赋默认值) 4.调用父类构造器(注意调用父类构造器之前已经给父类的非静态的属性显示赋值,如果有显示赋值的话...

    C#调用Java类的方法

    想知道如何在C#中调用Java类的方法吗,这个文档里手把手教你操作过程

    corejava源码-core:一个高级且高度优化的Java库,用于构建框架:它对扫描类路径,在运行时生成类,促进使用反射,扫描文件系统,执行

    Core在8至17-ea的Java版本上进行了测试,它是一个完全独立,高级,免费和开放源代码的Java框架构建库,它对于扫描类路径,在运行时生成类,促进使用反射,扫描非常有用。文件系统,执行字符串化的源代码等等。 ...

    JAVA上百实例源码以及开源项目

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    java开源包4

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包101

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包11

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包6

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包9

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包5

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包8

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

    java开源包10

    Java类重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java类 Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建...

Global site tag (gtag.js) - Google Analytics