面试基本内容
1.类加载器
类加载器加载过程:
加载:(将字节码文件加载到运行时数据区的方法区中/元空间)
链接:(验证:检查字节码文件是否合法—>准备:静态类变量赋值为默认值,不会实例变量分配初始化—>解析:将常量池引用,转化为直接引用)
初始化:(执行类构造器方法clinit,自动收集类中类变量的赋值动作和静态代码块中的语句合并而来)
要看某个类的继承关系,可以选择对应的类,点击F4,即可看到他们之间的继承关系
加载器类型:
引导类加载器(bootstrapclassloader引用类加载器)和自定义类加载器(继承classloader,Extclassloader扩展类加载器,appclassloader系统类加载器等)这些类加载器是包含关系。
双亲委派机制:
利:避免重复加载,防止核心类库被修改(沙箱安全机制)
2.运行时数据区
程序计数器:
串行:
并行:
并发:
Java虚拟机栈:
对于虚拟机栈常见的异常:
OutOfMemoryError(OOM):线程太多导致
StackOverflowEorror:调用方法太多导致
设置虚拟机栈大小:
Oracle | Cloud Applications and Cloud Platformhttps://www.oracle.com/
局部变量表:
查看字节码插件:
操作数栈(底层数组):
动态链接:
动态链接的作用就是为了将这些符号引用转换为调用方法的直接引用。