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

ClassLoader的动态加载机制

阅读更多

    ClassLoader的动态加载机制。

     一、原则:

         1、Java中的ClassLoader并非一次加载,而是在需要的时候才会加载。

         2、static语句块在加载后只会执行一次。

         3、dynamic语句块每次new新的对象都会执行。

                   * 执行在static语句块之后,构造函数之前

                   * 等同于构造方法中的语句

                   * 用的较少

         4、java -verbose:class参数可以观察类的具体加载过程。

    

   二、下面我们首先来看一段代码。

   

package initialization;
/**
 * 请使用-verbose:class参数查看加载顺序
 */
class A{
	public A(int i){
		System.out.println("A("+i+")");
	}
}

class C{
	static A a1 = new A(1);	    
	public C(){
		System.out.println("C()");
	}
	static{
		System.out.println("类C的static块");
	}
	{
		System.out.println("类C的动态语句块--此方法会无条件的加在每个构造函数之前");
	}
}
class D{
	public D(){
		System.out.println("D()的构造函数");
	}
}
public class TestDynanicLoadingV2 {
	public static void main(String[] args){
		System.out.println("main()--begin");
		new A(2);
		System.out.println("main()--middle");
		new C();
		new D();
	}
}

 

  三、可以在eclipse中,右键该文件,使用Run As-->Open Run Dialog,然后在Arguments标签页中的VM arguments中输入“-verbose:class”参数来执行该类,结果如下: 

[Loaded initialization.TestDynanicLoadingV2 from file:/D:/workspace/java/TestReflection/bin/]
main()--begin
[Loaded initialization.A from file:/D:/workspace/java/TestReflection/bin/]
A(2)
main()--middle
[Loaded initialization.C from file:/D:/workspace/java/TestReflection/bin/]
A(1)
类C的static块
类C的动态语句块--此方法会无条件的加在每个构造函数之前
C()
[Loaded initialization.D from file:/D:/workspace/java/TestReflection/bin/]
D()的构造函数

  四、分析

    从上面的代码运行结果可以看出,ClassLoader在加载类时,是一行一行的加载,只有在需要时,它才会把相关的类load到内存中来。

        

分享到:
评论

相关推荐

    使用classloader动态加载Class

    2. **双亲委派模型**:Java的类加载机制遵循双亲委派模型,即当一个类加载器接收到加载类的请求时,它会先委托给父类加载器去加载,只有当父类加载器无法加载时,当前类加载器才会尝试自己加载。这种设计有助于防止...

    ClassLoader类加载机制和原理详解

    双亲委派模型使得系统类(如java.*开头的类)由Bootstrap ClassLoader加载,而用户自定义类由应用程序类加载器(AppClassLoader)加载。这避免了类的冲突,保持了系统类库的稳定性。但有时我们可能需要打破这种模型...

    ClassLoader动态加载dex

    通过分析这些源代码,我们可以更深入地理解如何实现ClassLoader的动态加载机制。 总结来说,Android的ClassLoader动态加载dex是一种高级技巧,它可以让我们在不更新整个APK的情况下实现功能更新。这涉及到对Android...

    ClassLoader类加载机制

    它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏览器中并执行。现在类加载器在 ...

    ClassLoader运行机制 自己写的

    ClassLoader的基本职责是根据类名动态加载对应的类文件。在Java中,类加载过程遵循双亲委派模型(Parent Delegation Model)。这意味着当一个ClassLoader尝试加载某个类时,它首先会将任务委托给其父ClassLoader。...

    【图解版】深入分析ClassLoader类加载工作机制

    【图解版】深入分析ClassLoader类加载工作机制,从原理到JVM的装载过程,详情分析了ClassLoader加载类以及自定义类加载器的过程,不可用于商业用途,如有版权问题,请联系删除!

    Android中的动态加载机制

    在Android系统中,动态加载机制是一种关键的技术,它允许应用程序在运行时加载或者卸载代码模块,极大地提高了软件的灵活性和可扩展性。这一技术在实现插件化开发中尤为重要,因为它能让应用在不更新主程序的情况下...

    ClassLoader(类加载机制)1

    Java的类加载机制是其运行的核心部分,它涉及到如何将`.class`文件转换为内存中的类实例。在Java中,`ClassLoader`是负责这个过程的关键组件。本文将深入探讨ClassLoader的工作原理,Java类的结构,以及Java类的动态...

    Android中的动态加载机制(折腾版) 源码

    3. 实现类的动态实例化:通过自定义ClassLoader加载的类,可以使用Class.forName()方法获取其Class对象,然后通过newInstance()创建实例。 四、测试与实践 在提供的压缩包中,load.jar和test.jar可能是包含待动态...

    java的ClassLoader类加载器机制

    Java的ClassLoader类加载器机制 在 Java 虚拟机(JVM)中,类加载器(ClassLoader)扮演着非常重要的角色。类加载器负责加载 Java 类,包括核心类和用户自定义类。在 JVM 运行过程中,类加载器会形成一个层次结构,...

    tomcat 类加载机制 —— ClassLoader

    《Tomcat类加载机制——ClassLoader详解》 在Java Web开发中,Tomcat作为最常用的Servlet容器,其类加载机制对于理解和优化应用性能至关重要。本文将深入探讨Tomcat的ClassLoader是如何工作的,以及它如何影响到...

    ClassLoader加载机制

    该电子书详细介绍了java虚拟机类加载机制,对于深入理解jvm工作原理有很好的帮助作用,对于初学java,有一定工作经验的小伙伴来说是一本提高自身java素养,夯实自己java基本技能的“葵花宝典”。

    浅谈Android Classloader动态加载分析

    Android Classloader动态加载分析 Android Classloader动态加载分析是Android应用程序中一个非常重要的知识点。ClassLoader是Java虚拟机(JVM)中的一种机制,负责加载Java类文件到内存中,并将其转换为java.lang....

    安卓开发框架工具类相关-Android中的动态加载机制(折腾版)源码.zip

    在安卓开发中,动态加载机制是一项关键的技术,它允许应用程序在运行时加载和卸载代码模块,提高了软件的灵活性和可扩展性。本资源提供的"Android中的动态加载机制(折腾版) 源码.zip"包含了一些实现动态加载的示例...

    类加载机制ClassLoader

    在Java编程语言中,类加载机制(ClassLoader)是理解JVM(Java Virtual Machine)工作原理的关键部分。它负责将.class文件从磁盘加载到内存中,使得Java程序能够执行。这个过程包括加载、验证、准备、解析和初始化五...

    ClassLoader类加载器

    了解和掌握ClassLoader的工作原理以及如何自定义ClassLoader对于深入理解Java应用程序的运行机制非常有帮助。以下是对ClassLoader API的使用和自定义的详细说明。 首先,我们来看ClassLoader的基本概念。在Java中,...

    理解Java ClassLoader机制

    最后,App ClassLoader加载的是应用类路径(ClassPath)中的类。 ClassLoader的工作流程主要包含以下步骤: 1. **查找类**:当JVM需要加载一个类时,ClassLoader会根据类名(全限定名,如`java.lang.String`)在...

    深入研究Java类加载机制 深入研究Java类加载机制

    例如,Bootstrap ClassLoader加载的核心类库不会被其他类加载器重新加载。 #### 五、自定义类加载器 虽然Java提供了默认的类加载器,但在某些情况下可能需要自定义类加载器来满足特定的需求,如实现热部署、动态...

    java ClassLoader机制及其在OSGi中的应用

    总结来说,Java ClassLoader机制是Java平台的基础,它使得程序能够动态地加载和管理类。而在OSGi这样的模块化环境中,ClassLoader机制得到了进一步的发展,实现了更加精细的类加载控制和更好的模块隔离。理解并掌握...

Global site tag (gtag.js) - Google Analytics