是可运行Java代码的虚拟计算机,包括一套字节码指令集,一组寄存器(是 CPU 内部的数量较少但是速度很快的内存(与之对应的是 CPU 外部相对较慢的 RAM 主内 存)。寄存器通过对常用值(通常是运算的中间值)的快速访问来提高计算机程序运行的速 度)。,一个栈,一个垃圾回收,堆,和一个存储方法区域,
堆:对象
栈:局部变量
本地方法栈:native
程序计数器:要执行的下一行代码
方法区:常量,静态变量
JVM内存分析:
先经过javac命令编译成字节码文件,经Java命令运行这个字节码文件后
虚拟机开始工作
虚拟机大概分为三个部分:类装载子系统,运行时数据区,字节码子系统,
类装载子系统 将字节码文件交由 运行时数据区,
字节码执行引擎执行代码(运行时数据区的代码)
栈是描述方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量,操作数栈(加减),动态链接(方法符号的内存地址),方法出口)
虚拟机为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量)
栈是线程私有,不能实现线层间的共享
是一个连续的内存空间
当一个程序开始运行的时候,虚拟机就开始实例化了,多个程序启动,就会有多个虚拟机实例化,程序退出或者关闭,虚拟机实力消亡,多个虚拟机之间数据不能共享。
垃圾回收算法:
Mark-Sweep(标记清除)
Copying(拷贝)
Mark-Compact(标记压缩)
常见的垃圾回收器:待完善