JVM
2021-05-17 15:22:08 11 举报
一个Java从产生到消失的过程
作者其他创作
大纲/内容
Compiled from \"JvmTest.java\"public class com.zyq.nat.controller.JvmTest { public com.zyq.nat.controller.JvmTest(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object.\"<init>\":()V 4: return public static void main(java.lang.String[]); Code: 0: new #2 // class com/zyq/nat/controller/JvmTest 3: dup 4: invokespecial #3 // Method \"<init>\":()V 7: astore_1 8: aload_1 9: invokevirtual #4 // Method compute:()I 12: pop 13: return public int compute(); Code: 0: iconst_1 1: istore_1 2: iconst_2 3: istore_2 4: iload_1 5: iload_2 6: iadd 7: bipush 10 9: imul 10: istore_3 11: iload_3 12: ireturn}
局部变量表
JDK1.8
JvmTest.class
b = 2
JvmTest()
堆
程序计数器
user
Survivor区(幸存区)
s1(1/10)
1
man()-栈帧
out 30in 30out 3out 10in 10in 3out 1out 2in 2in 1
年轻代(1/3)
JDK1.7
修改
full gc(Old存满触发)
javac
栈
动态链接
老年代(2/3)
对象存进Eden font color=\"#cc0000\
JvmTest.class
jvmTest
方法区(元空间)常量+静态变量+类信息
public class JvmTest { public static final int initData = 666; public static User user = new User(); public static void main(String[] args) { JvmTest jvmTest = new JvmTest(); jvmTest.compute(); } public int compute(){ int a = 1; int b = 2; int c = (a + b) * 10; return c; }}
执行
方法出口
操作数栈
本地方法栈
线程2
栈(线程)
User()
垃圾搜集线程(可达性分析算法)
常量池
JvmTest .java
Eden(8/10)
s0(1/10)
15
FILO
this
c = 30
本地方法栈(为执行native修饰的本地方法分配的内存空间 )
a = 1
指针引用
运行时数据区(内存模型)
compute()-栈帧
minor gc(Eden存满触发)
字节码执行引擎
类装载子系统
main线程
元空间
JVM虚拟机
0 条评论
下一页