美文网首页
Java[虚拟机]-Java内存区域学习总结

Java[虚拟机]-Java内存区域学习总结

作者: 马小藤 | 来源:发表于2019-03-11 21:30 被阅读0次

Java[虚拟机]-Java内存区域学习总结

学习博客:
java虚拟机内存区域的划分以及作用详解:https://www.cnblogs.com/whgk/p/6138522.html
JVM的内存区域划分 : https://www.cnblogs.com/dolphin0520/p/3613043.html

一.Java虚拟机允许主要流程:

Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。


在这里插入图片描述

二.Jvm运行时数据区概要:

虚拟机栈即Java栈


在这里插入图片描述

三. 虚拟机栈结构概要:

在这里插入图片描述
  1. 运行程序,CarTest.java由编译器编译就会变为CarTest.class,将CarTest.class加入方法区,检查字节码是否有常量,若有(DEFAULT_COLOR)加入运行时常量池;
  2. 遇到main方法,创建一个栈帧,入虚拟机栈,然后开始运行main方法中的程序
  3. Car c1 = new Car(); 第一次遇到Car这个类,所以将Car.java编译为Car.class文件,然后加入方法区,跟第一步一样。然后new Car()。就在堆中创建一块区域,用于存放创建出来的实例对象,地址为0X0010.其中有两个属性值 color和num。默认值是null 和 00
  4. 然后通过c1这个引用变量去设置color和num的值,
  5. 调用run方法,然后会创建一个栈帧,用来装run方法中的局部变量的,入虚拟机栈,run方法结束之后,该栈帧出虚拟机栈。又只剩下main方法这个栈帧了
  6. 接着又创建了一个Car对象,所以又在堆中开辟了一块内存,之后就是跟之前的步骤一样了。

相关文章

网友评论

      本文标题:Java[虚拟机]-Java内存区域学习总结

      本文链接:https://www.haomeiwen.com/subject/ldmipqtx.html