JVM
1:JVM的位置
-
Java 程序
-
JVM(JRE)
-
操作系统(Windows Linux Mac)
-
硬件 (内存,CPU,GPU,磁盘)
2:JVM的体系结构
java file -> calss file -> class loader -> 加载到 JVM中
- 运行时数据区
- 方法区 method area
- Java 栈 Java stack
- 本地方法区 native method area
- 堆 heap
- 程序计数器 PC
- 执行引擎
- 本地方法接口 <---- 本地方法
栈里面不会有垃圾,栈又垃圾的画,main函数在最底下,肯定是崩了
99 %垃圾都是在堆上的
3:类加载器的作用
- 加载 class文件 new Student()
package java.lang;
public class String{
public String toString(){
return "hello";
}
public static void main(String[] args){
String t=new String();
t.toString();
}
}
在Java.lang.String中找不到main方法,走的不是这个方法
双亲委派机制
- 类加载器收到类加载的请求 application
- 将这个请求向上委托父类加载器,一直向上委托,直到启动类加载器
- 启动加载器检查是否能加载当前这个类,能加载就结束,使用当前的加载器,否则,抛出异常,通知子加载器进行加载
app–> EXc–> BOOT(最终执行)
Java =C++ – 去掉繁琐的东西 (内存管理 指针)
4:native
- 被native修饰的方法叫做本地方法
- 在本地方法区
- 一般使用C语言编写