JVM虚拟机是Java运行环境的一部分,是通过计算机仿真各种功能虚构出来的,我觉得它也可以理解为计算机的一个镜像;
我们平常在idea中写的代码是.Java文件,计算机CPU是不能识别的,它只能识别0和1的二进制文件 ;通过Javac编译成.class文件 ;接下来会通过JVM的操作转换成被电脑识别的二进制文件
要理解.class文件如何在JVM中工作的?就必须要了解它的内存结构
查资料了解到JVM的内存结构分为私有和共享两个部分,下面主要了解下共享的部分,参考下图
堆内存:存放的全部是对象,每个对象都包含了对应的信息
栈内存:每个线程都包含一个栈区,栈中只保存基本数据类型的对象,和自定义对象的引用{也就是我们常说的地址值};对象的实体是保存在堆内存中
方法区:也称为静态区,永久区;存储已经被虚拟机加载的类信息;在整个程序中唯一的元素,如static修饰静态变量 ; 运行时常量池也是在方法区的一部分,一般存放编译时期生成的各种字符串