java 静态代码块 动态代码块 加载时间

本文探讨了Java中静态代码块和动态代码块的加载顺序。通过观察JVM启动参数 `-verbose:class` 输出的类加载信息,我们可以验证Java的类加载机制是动态的。静态代码块在类加载时执行一次,而动态代码块则在每次创建类的对象时执行。了解这些机制对于深入理解Java内存管理和类加载过程至关重要。
摘要由CSDN通过智能技术生成

//自己看了一些视频,察觉了一些问题  现在来说明:Java中静态代码块 动态代码块加载时间

// 像JVM传递参数-verbose:class 我们可以看到classload加载class的顺序

①证明证明Java是动态加载类的  ②动态块,静态块 加载顺序

public class Hello {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new A(1);
		new A(2);
//		new A(3);
//		System.out.println("^^^^" + A.class.getClassLoader());
		System.out.println("***********");
		new B();
//		ClassLoader c = Hello.class.getClassLoader();
//		while(c != null){
//			System.out.println(c.getClass().getName());
//			c = c.getParent();
//		}
		
	}

}

class A
{
	A(int i){
		System.out.println("Constructor");
	}
	static{
		System.out.println("A");
	}
	
	{
		System.out.println("Dynamic A");
	}
}

class B
{}


 

打印结果:

[Opened F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Object from F:\JDK_1.7\lib\rt.jar]
[Loaded java.io.Serializable from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Comparable from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.CharSequence from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.String from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.GenericDeclaration from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.Type from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.AnnotatedElement from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Class from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Cloneable from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ClassLoader from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.System from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Throwable from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Error from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ThreadDeath from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Exception from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.RuntimeException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.security.ProtectionDomain from F:\JDK_1.7\lib\rt.jar]
[Loaded java.security.AccessControlContext from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ReflectiveOperationException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ClassNotFoundException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.LinkageError from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.NoClassDefFoundError from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ClassCastException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ArrayStoreException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.VirtualMachineError from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.OutOfMemoryError from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.StackOverflowError from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.IllegalMonitorStateException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ref.Reference from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ref.SoftReference from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ref.WeakReference from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ref.FinalReference from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ref.PhantomReference from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ref.Finalizer from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Runnable from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Thread from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.Thread$UncaughtExceptionHandler from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.ThreadGroup from F:\JDK_1.7\lib\rt.jar]
[Loaded java.util.Map from F:\JDK_1.7\lib\rt.jar]
[Loaded java.util.Dictionary from F:\JDK_1.7\lib\rt.jar]
[Loaded java.util.Hashtable from F:\JDK_1.7\lib\rt.jar]
[Loaded java.util.Properties from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.AccessibleObject from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.Member from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.Field from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.Method from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.reflect.Constructor from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.MagicAccessorImpl from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.MethodAccessor from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.MethodAccessorImpl from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.ConstructorAccessor from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.ConstructorAccessorImpl from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.DelegatingClassLoader from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.ConstantPool from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.FieldAccessor from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.FieldAccessorImpl from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.UnsafeFieldAccessorImpl from F:\JDK_1.7\lib\rt.jar]
[Loaded sun.reflect.UnsafeStaticFieldAccessorImpl from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.MethodHandle from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.MemberName from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.MethodHandleNatives from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.BoundMethodHandle from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.AdapterMethodHandle from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.DirectMethodHandle from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.MethodType from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.MethodTypeForm from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.BootstrapMethodError from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.WrongMethodTypeException from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.CallSite from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.CountingMethodHandle from F:\JDK_1.7\lib\rt.jar]
[Loaded java.lang.invoke.ConstantCallSite fr

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值