JVM-JVM内存结构

一、概念

Java虚拟机——JVM,JVM我们可以想象为一个DOS程序,java之所以能做到“一次编译,处处运行”,就是因为它的存在。java程序从源代码到运行三个阶段:编码--编译--运行,其中jvm在其中的角色就是编译阶段,将.class文件解释为机器码,也就是说,只要有了jvm,那么不管是在哪个平台(操作系统)中都能运行java代码,这也就是体现了java的跨平台特性,当然,jvm不仅可以运行java,本质上只要符合它的规范的语言都是可以的,比如说Scala。


(jdk,jre,jvm之间的关系图)

二、内存结构

1、方法区

        它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域

2、栈

        java中的方法都存在栈中,因为符合后进先出的规则,栈描述的是java 方法执行的内存模型,每个方法被执行的时候 都会创建一个“栈帧”用于存储局部变量表(包括参数)、操作栈、方法出口等信息。每个方法被调用到执行完的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。声明周期与线程相同,是线程私有的。


3、堆

        各个线程共享的内存区域,其中最大的内存区域为GC堆,是用来回收不再使用的对象的一种实现,GC堆分为新生和年老,新生代主要存储新创建的对象和尚未进入老年代的对象。老年代存储经过多次新生代GC(Minor GC)任然存活的对象。

猜你喜欢

转载自blog.csdn.net/S_body/article/details/80867989