- JVM基础
- JVM探究
- jvm所处位置
- jvm体系结构
- 类加载器及双亲委派机制
- 虚拟机
- JVM的位置
- JVM整体结构
- JVM的生命周期
- SUN Classic VM
- Exact VM
- HotSpot VM
- 内存结构概述
- 类加载器和类的加载过程
- 类的加载过程
- 链接
- 初始化
- 类加载器的分类
- 类加载器的使用
- 使用自定义类加载器的原因
- ClassLoader的常用方法
- 双亲委派机制原理
- 沙箱安全机制
- 类的主动使用和被动使用
- 运行时数据区概述及线程
- JVM中的线程
- PC寄存器
- PC寄存器使用案例
- PC寄存器常见的面试题
- 虚拟机栈
视频地址:
尚硅谷
看到第45集
JVM探究 jvm所处位置
注意:静态变量术语类的变量
注意:java的核心类库都是由引导类加载器来完成的
public class Test1 {
private int a=3;
public static void main(String[] args) {
//获取系统类加载器
ClassLoader systemCloader=ClassLoader.getSystemClassLoader();
System.out.println("系统类加载器:"+systemCloader); // sun.misc.Launcher$AppClassLoader@b4aac2
//获取扩展类加载器
ClassLoader extClassLoader=systemCloader.getParent();
System.out.println("扩展类加载器:"+extClassLoader); // sun.misc.Launcher$ExtClassLoader@140e19d
//尝试获取引导类加载器
System.out.println("启动类加载器:"+extClassLoader.getParent()); //null
//获取当前自定义类加载器
System.out.println("自定义类加载器"+Test1.class.getClassLoader()); // sun.misc.Launcher$AppClassLoader@b4aac2
//获取String类加载器 获取为null 说明String类由 引导类加载器 加载
System.out.println("String类加载器:"+String.class.getClassLoader()); // null
}
}
类加载器的使用
// 获取引导类加载器可以加载 哪些路径下的文件
URL[] urls= Launcher.getBootstrapClassPath().getURLs();
System.out.println("*****************************************");
System.out.println("获取引导类加载器可以加载 哪些路径下的文件");
for (URL url:urls){
System.out.println(url);
}
引导类加载器可以加载的文件路径:
扩展类加载器可以加载的文件路径
System.out.println("*****************************************");
System.out.println("获取扩展类加载器可以加载 哪些路径下的文件");
String extString=System.getProperty("java.ext.dirs");
for(String str:extString.split(",")){
System.out.println(str);
}
注意:引导类加载器无法直接获取,因为它是由C和C++ 编写的。
双亲委派机制的优势
进入编译后的class文件的目录,使用命令:
PC寄存器为什么要被设置成线程私有
java虚拟机栈是什么
设置栈内存的大小



