Java虚拟机--内存结构
1.JVM是什么? JVM:Java Virtual Mechinal(Java虚拟机).它是一个虚构的计算机,是通过在实际的计算机上模拟各种功能来实现的。JVM的主要工作是解释自己的指令集(字节码,如java源码编译成class文件在虚拟机上运行)并映射到本地的CPU指令集或OS的系统调用。Java语言跨平台的本质就是不同的操作系统使用不同的JVM映射规则,使其与操作系统无关,从而实现跨平台。 2.JVM的内存结构是什么样子? Java虚拟机在运行Java程序的时候,会把它所管理的内存划分为若干个不同的数据区域,如图: 3.那么接下来每个数据区域都是做什么的呢? (1).程序计数器: 是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器。尤其在多线程的情况下,尤为重要。Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,即在任何一个确定时刻,一个处理器只会执行一条线程,当线程切换后就需要恢复到正确位置,因此,程序计数器要实现线程隔离,每个线程都有自己的专属的计数器。值得注意的是: 此内存区域是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。 (2).堆 : 此内存区域是Java虚拟机管理的最大一块内存,同时也是线程共有的,在虚拟机启动时创建