类加载子系统
类加载子系统作用
类的加载过程
类的加载过程
类的加载过程一:Loading
类的加载过程二:Linking
类的加载过程三:Initialization
tips:
1、如果当前的类中没有声明静态变量和没有静态代码块,则不会存在<clinit>类构造器方法
2、任何一个类声明以后,内部至少存在一个类的构造器
例子:为什么能直接给number赋值 因为它再linking的prepare阶段已经被初始化为0
类加载器的分类
tips:
1、对用户自定义类来说:默认使用系统类加载器进行加载
2、Java的核心类库都是使用引导类加载器进行加载的
3、在程序中获取不到引导类加载器,因为它是由c/c++进行编写的
启动类加载器
扩展类加载器
在idea中打印时它的简写是ExtClassLoader
应用程序类加载器
自定义加载器
什么时候使用自定义加载器
用户自定义类加载器 实现步骤
ClassLoader的常用方法即获取方法
(简单了解下)
双亲委派机制
什么是双亲委派机制
双亲委派机制工作原理
例子1:
执行main方法时候 向上加载ClassLoader 然后引导类加载器加载后发现 string是没有main方法的 因为这是加载不到当前类
例子2:
在java.lang包下面根本没有这个类 所以 引导类加载器加载时抛出安全异常 这个lang包是有访问权限的 它是组织我们在这个包下自定义类(起到保护作用)
沙箱安全机制
上面这个例子1、2就是沙箱安全机制起了作用
双亲委派机制的优势
1、避免类的重复加载
2、保护程序安全,防止核心API被随意修改(看例子1、例子2)
其他
1、在JVM中表示两个class对象是否为同一个类存在两个必要条件:
2、对类加载器的引用
3、类的主动使用和被动使用
标签:委派,自定义,例子,双亲,JVM,机制,子系统,加载 来源: https://blog.csdn.net/zzzzzzzzzzzyt/article/details/121541376
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。