JVM基本结构

来源:互联网 发布:数据库如何设置默认值 编辑:程序博客网 时间:2024/05/29 18:45

当JAVA虚拟机运行一个程序时,它需要内存来存储已装载的class文件中得到的信息等。Java虚拟机把这些东西都组织到几个“运行时数据区”中,以便于管理。

 

JVM内存模型结构图:


Java栈:栈由一系列帧组成,帧保存一个方法的局部变量,操作数栈、常量池指针,每次方法调用创建一个帧,并压栈。

javajava堆和程序开发密切相关,保存对象,所有线程共享java堆,对分代GC来说,堆也是分代的。分为新生代和老年代。

新生代:存放刚刚创建的对象

老年代:存放幸存区未被回收的对象。

方法区:保存装载的类的信息,类型常量池、字段、方法信息、方法字节码。通常和用就去关联在一起。

PC寄存器:每个线程拥有一个pc寄存器,在线程创建时创建,指向下一条指令的地址,执行本地方法时,pc的值为undefined

 

栈、堆、方法区交互:


对比:堆上分配和栈上分配

1、小对象,在没有逃逸的情况下可以直接分配在栈上

2、直接分配在栈上,可以自动回收,减轻GC压力,分配在堆上,每次需要清理空间

3、大对象或者逃逸对象无法在栈上分配


1 0
原创粉丝点击