2026/6/20 7:22:35
网站建设
项目流程
dede网站幻灯片,免费ppt模板大全下载,北京旅游攻略,送菜上门网站app如何做目录
什么是类加载器? 常见的类加载器?
双亲委派模型
为什么要打破双亲委派模型
Minor Gc 和 Full GC 有什么不同呢#xff1f;Minor GC与Full GC分别在什么时候发生#xff1f; 什么是类加载器? 常见的类加载器? Bootstrap ClassLoader#xff1a;启动类加载器
最…目录什么是类加载器? 常见的类加载器?双亲委派模型为什么要打破双亲委派模型Minor Gc 和 Full GC 有什么不同呢Minor GC与Full GC分别在什么时候发生什么是类加载器? 常见的类加载器?BootstrapClassLoader启动类加载器最顶层的加载类由C实现负责加载JAVA_HOME/jre/lib目录下的jar包和类,如String、System等ExtensionClassLoader扩展类加载器它负责加载JRE的扩展目录JAVA_HOME/jre/lib/ext 下的类中JAR包的类ApplicationClassLoader系统类加载器面向我们用户的加载器负责加载当前应用classpath下的所有jar包和类双亲委派模型双亲委派模式:在类加载的时候系统会首先判断当前类是否被加载过。已经被加载的类会直接返回否则才会尝试加载。加载器加载类时先把请求委托给自己的父类加载器执行, 直到顶层的启动类加载器. 父类加载器能够完成加载则成功返回, 不能则子类加载器才自己尝试加载.简而言之:自底向上检查类是否被加载, 自顶向下尝试加载类优点:避免类的重复加载避免Java的核心API被篡改, 保证安全为什么要打破双亲委派模型但是使用双亲委派也存在一定的局限性在正常情况下用户代码是依赖核心类库的所以按照正常的双亲委派加载流程是没问题的但是在加载核心类库时如果需要使用用户代码双亲委派流程就无法满足比如在使用JDBC时 利用DriverManager.getConnection获取连接时就会存在这样的问题。DriverManager是由Bootstrap ClassLoader加载的在加载DriverManager时会执行其静态方法加载初始驱动程序但是这些实现类基本都是第三方厂商提供的根据双亲委派原则第三方的类不可能被Bootstrap ClassLoader加载。所以这时候就需要打破双亲委派模型来进行加载.Minor Gc 和 Full GC 有什么不同呢Minor GC与Full GC分别在什么时候发生Minor GC是发生在新生代的垃圾收集动作所以Minor GC非常频繁一般回收速度也比较快。Full GC 指的是针对新生代、老年代、永久代的全体内存空间的垃圾回收. Full GC回收速度更慢, 发生频率也更低.什么时候触发Minor GCEden区域满了新创建的对象大小 Eden所剩空间什么时候会触发full GCSystem.gc()方法的调用老年代空间不足永久代空间不足统计得到的Minor GC晋升到老年代的平均大小大于老年代的剩余空间堆中分配很大的对象所谓大对象是指需要大量连续内存空间的java对象例如很长的数组此种对象会直接进入老年代而老年代虽然有很大的剩余空间但是无法找到足够大的连续空间来分配给当前对象此种情况就会触发JVM进行Full GC。