问题描述
由于一般的项目中,JVM直接加载了所有的类到内存中,而Spring使用的是晚加载,那么spring是如何限制JVM进行晚加载AppClassLoader的呢
解决方案
引用由于一般的项目中,JVM直接加载了所有的类到内存中,这句话,本身就是不对的,请依次执行下面的t1和t2。你会发现,只执行t1的时候,B是不会被加载进来的。换句话,只有到真正需要B,才加载B这个类。下面的代码没用到ArrayList,难道ArrayList一开始就被加载了?愿意的话,你自己写个ClassLoader验证一下就成了public class A { public static void main(String[] args) { } static void t1() { System.out.println("a"); } static void t2() { B b = new B(); }}class B { static { System.out.println("I'm init"); }}
时间: 2024-10-21 18:06:02