JVM相关知识

类的加载过程

双亲委派机制

原理

优势

避免类的重复加载

保护程序安全,避免核心api被篡改

示例

自定义一个java.lang.String类,加载时会向上委派,启动类加载器Bootstrap ClassLoader一看是java开头的类自己可以加载,于是就由启动类加载器进行加载,这时加载出来的就是核心库中的String类而不是自定义的,并不会打印

由于核心库中的String类是没有main()方法的,于是执行自定义的String类main()方法会报错

这样可以保证对java核心源代码的保护,称为沙箱安全机制

类的主动使用和被动使用

主动使用:

  • 创建类的实例
  • 访问某个类或接口的静态变量,或者对该静态变量赋值
  • 调用类的静态方法
  • 反射
  • 初始化一个类的子类
  • JAVA虚拟机启动时被标明为启动类的类
  • JDK7开始提供的动态语言支持
    其他使用JAVA类的方式都是对类的被动使用,都不会导致类的初始化
相关推荐
2401_832365521 天前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2301_779622411 天前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python
2301_766283441 天前
c++如何将控制台输出保存到文件_cout重定向到txt【详解】
jvm·数据库·python
zh1570231 天前
如何编写动态SQL存储过程_使用sp_executesql执行灵活查询
jvm·数据库·python
2401_824222691 天前
SQL报表统计数据量巨大_分批统计策略
jvm·数据库·python
X56611 天前
mysql如何处理连接数过多报错_调整max_connections参数
jvm·数据库·python
m0_609160491 天前
MongoDB中什么是Hashed Shard Key的哈希冲突_哈希函数的分布均匀性分析
jvm·数据库·python
2401_833033621 天前
C#怎么使用协变和逆变 C#泛型中的in和out关键字协变逆变是什么意思怎么用【语法】
jvm·数据库·python
m0_624578591 天前
JavaScript 中高精度小数(20位以上)的正确处理方法
jvm·数据库·python
m0_740352421 天前
如何用 Symbol 作为对象属性键名防止第三方库属性覆盖
jvm·数据库·python