java虚拟机内存模型
目录 一、虚拟机 二、虚拟机组成 1.栈 栈帧 2.程序计数器 3.方法区 对象组成 4.本地方法栈 5.堆 GC GC案例 一、虚拟机 同样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。 同一个java代码在windows上生成的机器码可能是0101…,在linux上生成的可能是1100…,那么这是怎么实现的呢? 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现。 那么虚拟机又是什么东西呢,如图是从软件层面屏蔽不同操作系统在底层硬件与指令上的区别,也就是跨平台的由来。 说到这里同学们可能还是有点不太明白,说的还是太宏观了,那我们来了解下java虚拟机的组成。 二、虚拟机组成 1.栈 我们先讲一下其中的一块内存区域栈,大家都知道栈是存储局部变量的,也是线程独有的区域,也就是每一个线程都会有自己独立的栈区域。 public class Math { public static int initData = 666; public static User user = new User(); public int compute() { int a = 1; int b = 2; int c = (a+b