今天带小白简单了解下代码在jvm中到底是咋样的执行过程

**

成天说java虚拟机(jvm)但是真正了解过吗,小潘哥带小白简单了解下,后续还会讲讲gc 和类的加载过程 等等面试中常考的jvm知识点在这里插入图片描述

**

今天带小白简单了解下代码在jvm中到底是咋样的执行过程_第1张图片

public class Person {
String ID;
String number;dengdneg
Integer age;
public static void main(String[] args) {
Person p=new Person();
p.ID=“01”;
p.number=“201896084076”;
p.age=18;
System.out.println(“我的id是:”+p.ID+“number是”+p.number+“年龄是:”+p.age);
}
}

上面图片手画的先将就看着(大老爷们手太糙了)。
重点来了。。。。。。。

前面我们了解到javac编译是把代码编译成class字节码文件,要想被处理还是要加载到内存中(jvm虚拟机中),执行时java 类名就是启动jvm虚拟机加载到内存中。

1 . 先把字节码class加载到内存中的方法区中。
2. 加载进来我们就要找main()方法它在栈中。
3. 下来就是Person p在main方法开辟的栈空间中存储指向堆new Person的地址(ox100)
4. 因为Person中有3个属性 ID number age 所以new Person在堆中就是 3个空间
5. 因为成员变量刚开始没设置初始值 所以就是默认值string 类型 就是null , Integer类型默认值就是0.
6. 下面赋值后就是把赋的值就是把p.ID=“01”; p.number=“201896084076”; p.age=18;放到对应的堆空间中。

明白了吧 这就是简单的person类的加载过程

今天就写到这 明天继续,,继续复习基础

你可能感兴趣的:(笔记,java,javase,javac,jvm,jdk)