JVM相关知识

类的加载过程

双亲委派机制

原理

优势

避免类的重复加载

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

示例

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

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

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

类的主动使用和被动使用

主动使用:

  • 创建类的实例
  • 访问某个类或接口的静态变量,或者对该静态变量赋值
  • 调用类的静态方法
  • 反射
  • 初始化一个类的子类
  • JAVA虚拟机启动时被标明为启动类的类
  • JDK7开始提供的动态语言支持
    其他使用JAVA类的方式都是对类的被动使用,都不会导致类的初始化
相关推荐
懒惰蜗牛10 小时前
Day66 | 深入理解Java反射前,先搞清楚类加载机制
java·开发语言·jvm·链接·类加载机制·初始化
额呃呃11 小时前
信号量唤醒线程的实际机制
java·开发语言·jvm
bjxiaxueliang11 小时前
一文详解Cpp多线程编程:从传统pthread到现代thread实践指南
java·开发语言·jvm
开心比对错重要13 小时前
进程、线程、虚拟线程详解及线程个数设置
java·jvm·算法·面试
Selegant17 小时前
百万 QPS 下的 Java 服务调优:JVM 参数、GC 策略与异步非阻塞编程
java·开发语言·jvm
消失的旧时光-194318 小时前
从 JVM 到 Linux:一次真正的系统级理解
android·linux·jvm
五阿哥永琪18 小时前
JVM 的内存区域是如何划分的?
jvm
没有bug.的程序员18 小时前
Sentinel 流控原理深度解析:从SlotChain到热点参数限流的设计哲学
jvm·微服务·云原生·eureka·sentinel·服务发现
程序员zgh1 天前
C语言 指针用法与区别(指针常量、常量指针、指针函数、函数指针、二级指针)
c语言·开发语言·jvm·c++
没有bug.的程序员1 天前
熔断、降级、限流:高可用架构的三道防线
java·网络·jvm·微服务·架构·熔断·服务注册