JVM是什么?

JVM是java虚拟机栈,用于运行java执行字节码文件的。是java实现跨平台的核心机制,因为它的目的是使用相同的字节码文件,在不同的操作系统运行的结果相同。

一、java内存模型

在JDK1.8之前,它是分为线程共享和线程私有的,在线程共享的部分分为堆区方法区;在线程私有的部分分为jvm虚拟机栈程序计数器本地方法栈。在1.8之后,它是将方法区换为元空间

jvm虚拟机栈:是由一个个的栈帧组成,每个栈帧中都拥有:局部变量表、操作数栈、动态链接、方法出口信息。每一次方法调用结束后,都会有一个对应的栈帧被压入虚拟机栈,调用完后,代表该方法的栈帧会从虚拟机中弹出。

本地方法栈:native关键字修饰本地方法被执行时,在本地方法中也会创建一个栈帧,用于存放native本地方法的局部变量表、操作数栈、动态链接、方法出入口信息。

程序计数器:1、字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制;

2、在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候,能够知道当前线程的运行位置;

元空间:用于存放类信息、常量、静态变量、JIT即时编译器编译后的机器代码等数据。JDK1.6

时,方法区是一片连续的堆空间,经常出现OutOfMemory的异常;JDK1.7后将字符串常量池、静态变量转

你可能感兴趣的:(JVM,1024程序员节)