JVM相关知识

类的加载过程

双亲委派机制

原理

优势

避免类的重复加载

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

示例

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

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

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

类的主动使用和被动使用

主动使用:

  • 创建类的实例
  • 访问某个类或接口的静态变量,或者对该静态变量赋值
  • 调用类的静态方法
  • 反射
  • 初始化一个类的子类
  • JAVA虚拟机启动时被标明为启动类的类
  • JDK7开始提供的动态语言支持
    其他使用JAVA类的方式都是对类的被动使用,都不会导致类的初始化
相关推荐
fly spider28 分钟前
一文概括 JVM 核心内容
jvm
brahmsjiang31 分钟前
Java类加载机制解析:从JVM启动到双亲委派,再到Android的特殊实现
android·java·jvm
cch89181 小时前
C++、Python与汇编语言终极对比
java·开发语言·jvm
彧翎Pro10 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
minji...14 小时前
Linux 线程同步与互斥(二) 线程同步,条件变量,pthread_cond_init/wait/signal/broadcast
linux·运维·开发语言·jvm·数据结构·c++
woai336415 小时前
JVM学习-基础篇-常见引用
jvm·学习
それども16 小时前
理解JVM参数 Xss 线程的栈大小
jvm
玛卡巴卡ldf16 小时前
【Springboot6】内存泄漏OOM、VisualVM、Arthas、Prometheus Grafana监控、垃圾回收
java·jvm·springboot
一个有温度的技术博主16 小时前
深入多级缓存:JVM进程缓存实战与数据库表拆分策略
jvm·数据库·缓存
码云数智-园园17 小时前
C# 内存模型的基石:值类型与引用类型的深度博弈
java·开发语言·jvm