接口的extend 后面可以接几个接口 接口没有父类概念
- JVM
- 类加载机制
- 字节码执行机制
- JVM内存模型
- GC垃圾回收
- JVM性能监控与故障定位
- JVM调优
虚拟机分类
系统虚拟机
程序虚拟机 Java程序必须在JVM运行
JVM定义
- 以Java技术实现的体积极小的编译代码运行平台,与操作系统和硬件无关
- JVM可以看作抽象的真实计算机,有自己的指令集和各种运行时内存区域
- JVM和Java语言并没有直接联系,它只与class字节码文件所关联
JVM几大模块
类加载器子系统
klass模型是什么
java类在JVM中存在的形式 C+ +的类
class文件
- 项约束】
magic 魔数
常量 14个
- 字面量
- 符号表
- 描述符
常量池
只有用了或者实例化了才会进入常量池
局部变量不会进入常量池
接口的基类不是Object,接口实现了Object的所有公共方法,任何一个接口字节码隐式含有一个Object类引用
引用类常量池
-
COSTANTClassinfo
-
字段类型引用的常量池 CONSTANTFieldrefinfo
- 所有非static final的字段
- 所有使用的字段 含赋值的字段、再其它地方使用的字段、使用了其它类的字段
- 方法类型引用 CONTANTMethodrefinfo
字面量常量池
- CONSTANTStringinfo (常量池 )
- 进入CONSTANTStringinfo 的情况
- static final 修饰也可以进去 CONSTANTStringinfo
- 所有出现的字符串字面量都可以进入
- CONSTANTIntegerinfo (常量类型)
- 进入CONSTANTIntegerinfo 的情况
- 整型字面量
- static final 修饰 byte、char、short、boolean、int数据类型
- 可用于描述boolean (1,0) . byte (-27~27-1【-128~127】) 、 int、short (-215215-1【-3276832767】 ) ,char (0~216-1【O-65535】)
- final修饰,直接进CONSTANTlntegerinfo常量池
- 非final修饰,在-3276832767(即-2^152^15-1,short的范围内),则直接逛入字节码指令内部,超出此范围进入直接进CONSTANTIntegerinfo常量池
- CONSTANT*Float *info (常量类型)
- 进入CONSTANTFloatinfo 的情况
- static final 修饰的Float
- 其他的Float字面量 无论是否final修饰都直接进常量池
- CONSTANT*Long *info (常量类型)
- 进入CONSTANTLonginfo 的情况
- 长整形字面量
- static final 修饰Long
- 其它的出现的字面量
- CONSTANT*Double *info (常量类型)
- 进入CONSTANTDoubleinfo 的情况
- 长整形字面量
- static final 修饰Double
- 其它的出现的字面量
JDK、JRE、JVM之间的关系
- JDK 开发工具包
- tools
- JRE Java运行时环境
- JAVA SE API
- compact profiles
- JVM
- HOTSPOT
- client
- server
- HOTSPOT
- JAVA SE API
注解的生命周期 source(在java源文件)-> class (可以到class文件)->runtime(在JVM运行的时候还存在,可以进行反射获取 )