JVM 类加载与执行
概述:
java通过字节码引入虚拟层隔离对底层依赖,一次编译到处运行。
类的字节码文件是运行时动态加载到jvm的方法区的
类有多种加载器,加载器间按双亲委托模式加载,可自定义类加载器实现隔离与灵活定制加载路径
类方法的字节码在调用方法时解释为机器码
1:总体结构
1:代码文件编译生成字节码文件,运行时加载(类加载-需要时加载)
2: 执行时jvm将字节码文件生成机器码执行。
字节码文件是java 引入的一种中间格式,介于代码与机器码之间,给JVM读取。
JVM运行时生成与运行环境匹配的机器码。
字节码屏蔽底层差异。但性能会有部分损耗。
JIT:动态编译可提前生成为机器码
2:类加载
需要时加载:类不是在JVM启动时全部加载,而是在使用时可动态加载。
有多种类加载器,分别负责加载不同的类文件。多个类加载器加载类时按照双亲委托模式加载(类加载器的上下级关系),先去上级类加载器中加载,如果没有本级加载器加载。
可自定义类加载器,灵活配置加载位置及隔离不同类加载器加载的类。类唯一标记=类加载器+类名。tomcat自定义类加载器可加载多个应用,应用中同名类不冲突。
3:字节码执行
类的方法字节码是在运行时解释器生成问机器码,交给cpu。
参考
极客时间架构师训练营-李智慧-第六章
评论