JVM集训-----内存结构
摘自: https://www.cnblogs.com/lowerma/p/11929041.html JVM集训-----内存结构 一、程序计数器/PC寄存器 ( Program Counter Registe ) 用于 保存当前正在执行的程序的内存地址(下一条jvm指令的执行地址) ,由于Java是支持多线程执行的,所以程序执行的轨迹不可能一直都是线性执行。当有多个线程交叉执行时,被中断的线程的程序当前执行到哪条内存地址必然要保存下来,以便用于被中断的线程恢复执行时再按照被中断时的指令地址继续执行下去。为了线程切换后能恢复到正确的执行位置, 每个线程都需要有一个独立的程序计数器 ,各个线程之间计数器互不影响,独立存储,我们称这类内存区域为“线程私有”的内存,是线程安全的。 特点:1.线程私有 2.不会存在内存溢出 二、虚拟机栈(Java Virtual Machine Stack) 虚拟机栈总是与线程关联在一起的, 每当创建一个线程,JVM就会为该线程创建对应的虚拟机栈 ,在这个 虚拟机栈中又会包含多个栈帧(Stack Frame) ,这些栈帧是与每个方法关联起来的, 每运行一个方法就创建一个栈帧 ,每个栈帧会含有一些局部变量、操作栈和方法返回值等信息。每当一个方法执行完成时,该栈帧就会弹出栈帧的元素作为这个方法的返回值,并且清除这个栈帧,