Fork me on GitHub

JVM全面剖析

JVM

程序计数器:指向当前线程正在执行的字节码指令地址,行号

虚拟机栈:存储当前线程运行方法所需要的数据、指令、返回地址

本地方法栈:

方法区:类信息、常量、静态变量、JIT

Heap:JVM的内存模型 (cmd、jconsole)

虚拟机栈

我们新建一个JVM.java类

1
2
3
4
5
6
7
8
public class JVM {
public void method(int n){
int i = 0;
int sum = i+n;

return;
}
}

使用javac 进行编译将生成的java.class写入JVM.txt中

1
2
javac JVM.java
javap -c JVM > JVM.txt

查看JVM.txt文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Compiled from "JVM.java"
public class JVM {
public com.lxk.service.JVM();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return

public void method(int);
Code:
0: iconst_0
1: istore_2
2: iload_2
3: iload_1
4: iadd
5: istore_3
6: return
}

解释说明上面Code下的指令:

1
2
3
4
5
6
7
0: iconst_0   将int类型常量0压入栈
1: istore_2 将int类型值存入局部变量2
2: iload_2
3: iload_1
4: iadd
5: istore_3
6: return

Heap

本文标题:JVM全面剖析

文章作者:LiuXiaoKun

发布时间:2019年05月28日 - 14:05

最后更新:2019年05月28日 - 23:05

原始链接:https://LiuZiQiao.github.io/2019/05/28/JVM全面剖析/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%