java内存管理

一、什么是JVM?

jvm的核心功能:

1、软件层面的机器码翻译

java的特点是Write Once Run EveryWhere ,这个特点的实现依赖于不同类型的JVM。class文件运行时需要转换成机器识别的机器指令,而JVM在软层面上完成了从我们认识的指令到机器指令的转换。

2、内存管理

二、java运行时数据区

java内存管理

java内存管理

1、我们写一个类无非包含三种代码:数据代码(int i=1;),指令代码(i++;)和控制代码(return;);计算机底层的操作也主要包含三个方面:数据流、指令流、控制流。

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

java内存管理

java程序执行的最小单位是线程,每个线程都有自己的程序计数器。程序计数器的作用就在于当线程挂起时,记录当前线程执行到哪一步。

3、虚拟机栈:存储当前线程运行方法时所需要的数据,指令

java内存管理

java内存管理


虚拟机栈是每个线程独享的内存区域,一个栈帧对应一个方法,当方法运行时就会进行压栈。局部变量的宽度是32位。


4、操作数栈

java内存管理

java内存管理


java内存管理

如上图所示,通过javac -c -v命令查看java编译器为我们生成的字节码文件

java内存管理

将字节码文件输出到txt文件中。

可以通过查看字节码指令,查看代码运行的具体操作过程

5、动态链接

java中的方法在运行期间,确定要执行该方法的类。如java的运行时多态。

6、出口

方法运行结束时需要出栈。java的出口分为两种,正常出口(如return)和异常出口(如抛出异常,捕获异常)

7、本地方法栈

java中用native修饰的方法,通过C或者C++去实现

8、方法区
存储类信息,静态变量,常量,JIT(Just In Time简称JIT,IT的核心思想: 可概括为“在需要的时候,按需要的量生产所需的产品",如java动态生成的class文件)