芯学苑专注java培训十年

当前位置  |首页常见问题 技术问题 Java虚拟机简介 西安芯学苑

Java虚拟机简介 西安芯学苑

来源:芯学苑Java培训2017-11-27关键词: 西安芯学苑 陕西IT培训学校

一、概念

jvm 是Java Virtual Machine(Java虚拟机)的缩写

jdk java development kit java开发工具包 开发java程序需要的一些工具

jre java runtime environment java运行时环境 java程序运行需要支持的一些工具类,资源等


20160822165017063.png


二、物理结构

jvm内存可以主要看成方法区、java堆、java栈、本地方法栈。


20160822165112204.jpg


JVM内存组成结构


20160822165149382.jpg


1、栈 stack

栈是先入后出的数据结构,栈中的基本单元为栈帧


20160822165239298.jpg


2、堆 heap

堆内存被分为新生代 young generation,旧生代 old generation。新生代被细分为Eden区,和Survivor区,Survivor又细分为from,to。


20160822165524128.jpg


3、方法区

记录一个类的元数据。比如:类的属性变量(类型、访问控制)、类的方法信息(访问权限、返回值、参数)、类自身的性质(抽象类、实体类、接口)、常量池、静态类变量,方法区同时也称为持久代 Permanet Generation

4、程序计数器

用于保存当前线程执行的内存地址。由于JVM程序是多线程执行的(线程轮流切换),所以为了保证线程切换回来后,还能恢复到原先状态,就需要一个独立的计数器,记录之前中断的地方,可见程序计数器也是线程私有的。

5、本地方法栈

和java栈的作用差不多,只不过是为JVM使用到的native方法服务的。

三、注意

java栈、程序计数器、本地方法栈都是线程私有的,线程生就生,线程灭就灭,而堆是线程共享的。