栈帧 Calc
InvocationCompletion
程序计数器
本地方法栈
卸载(Unload)
Operand Stacks
Hello.class
方法
线程
栈帧 main
使用(Use)
堆
jvm
运行时数据区
初始化(Initalize)
Hello.class类文件
虚拟机栈
main(){Cacs(){}}
S0
验证:验证类加载的正确性,文件的格式、字节码、元数据、符号引用是否有错误准备:为类的静态变量去分配一个内存,并将其去初始化一个默认值解析:将class文件中一些只在class文件用有用的一些符号,转化成jvm java进程中的一些地址,能够供我们程序使用
Linux
类加载的原则:双亲委派原则
result
装载(load)
opt2
非堆
Eden
Java虚拟机栈
Hello.java
opt1
jdk包含jrejre包含jvmjvm:运行class文件jdk:多了Tools,方便你进行Java开发的,最终交给jvm运行jvm是一门面向对象的语言创建、销毁、回收---->jvm:对对象的自动管理、内存管理
运行时常量池
新生代
JVM内存模型
ClassLoader
Operand Stacks(操作数栈)
java
在虚拟机栈中,每个方法就是一个栈帧
Windows
javac
Dynamic Linking
jvm屏蔽不同平台
方法区
MacOS
准备(Prepare)
落地
Local Variables(局部变量表)
obj
Local Variables
https://docs.oracle.com/javase/8/docs/index.html
链接(Link)
老年代
Run-Time Data Areas 运行时数据区 class文件已经通过类加载机制, jvm,该如何存储以及跑起来2.5.1. The pc Register PC计数器2.5.2. Java Virtual Machine Stacks Java虚拟机栈2.5.3. Heap 堆堆:线程共享存储的数据:存储对象2.5.4. Method Area 方法区 2.5.5. Run-Time Constant Pool 运行时常量池方法区:线程共享,线程不安全存储的数据:类型、常量、静态常量、静态变量、2.5.6. Native Method Stacks 本地方法栈
解析(Resolve)
验证(Verify)
CPU
S1