关闭

JVM基本结构

标签: JVM
348人阅读 评论(3) 收藏 举报
分类:

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

 

JVM内存模型结构图:


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

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

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

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

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

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

 

栈、堆、方法区交互:


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

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

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

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


1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:156395次
    • 积分:7754
    • 等级:
    • 排名:第2691名
    • 原创:130篇
    • 转载:0篇
    • 译文:0篇
    • 评论:2473条
    博客专栏
    最新评论