


单位:字节 (1字节=8位) char 2


双亲委派机制是Java虚拟机中类加载器的层次化加载模型,用于确保类的安全性和完整性。其核心原理是:当一个类加载器收到类加载请求时,会优先将请求委派给父类加载器处理,逐级向上直至启动类加载器(Bootstrap ClassLoader),若父类加载器无法完成加载,则由当前加载器尝试加载。
具体机制
请求委派:当应用程序类加载器(AppClassLoader)收到类加载请求时,首先检查自身是否已加载该类;若未加载,则将请求委派给父加载器(ExtClassLoader);若仍未加载,则继续委派给启动类加载器。
层次结构:
Bootstrap ClassLoader:最顶层加载器,负责加载JRE核心库(如rt.jar),由C++实现。
ExtClassLoader:加载JRE扩展库(如JRE/lib/ext目录)。
AppClassLoader:加载用户应用程序或第三方库。
关键作用
避免类重复加载:通过层级委派确保类版本一致性,防止因重复加载导致冲突。
提升安全性:通过父类优先原则,确保核心类库不被篡改
示例验证 通过Java代码可验证类加载器的层级关系:
public class ClassLoaderTest {
public static void main(String[] args) {
ClassLoader mainLoader = ClassLoaderTest.class.getClassLoader();
System.out.println(mainLoader.toString());
// 输出为AppClassLoader,其父类为ExtClassLoader,再往上为Bootstrap ClassLoader。 :ml-citation{ref="4,6" data="citationList"}
}
}
对象是如何申请内存空间的:
在JVM内存管理中,S0和S1是新生代的两个存活区,用于存储对象在Eden区存活下来的数据。默认情况下,新生代内存分配比例为8:1:1,即Eden区占80%,S0和S1各占10%。 1
核心功能 S0和S1主要用于对象分代收集(Minor GC),当Eden区填满后触发GC,存活对象会被移动到S0区;若S0区填满再触发GC,存活对象再移动到S1区。这种分代机制可减少Full GC频率,优化性能。

Full GC(全局垃圾回收)是Java虚拟机执行的一种垃圾回收机制,用于清理整个堆内存(包括年轻代、老年代)和方法区(元空间或Metaspace)中的无用对象。它是影响应用性能最大的垃圾回收操作,通常会导致应用程序线程暂停。
A、 触发条件 老年代空间不足:当新对象无法在老年代分配空间时,触发Full GC。 1 2 手动执行GC:通过调用:ml-search-more[System.gc()]{text="System.gc()"}或:ml-search-more[Runtime.getRuntime().gc()]{text="Runtime.getRuntime().gc()"}方法强制执行。 2 启用GC日志:启用GC日志记录功能会触发Full GC以提供详细信息。
B、回收内容 堆内存:清理年轻代(Eden区和Survivor区)及老年代中的无用对象。 1 3 方法区:释放已加载的类信息、常量、静态变量等数据。
C、影响 Full GC因涉及整个堆内存扫描和清理,耗时较长,可能导致应用暂停(STW),影响性能。频繁触发时需优化内存使用或调整垃圾回收器配置。
9万+

被折叠的 条评论
为什么被折叠?



