Jvm的运行时数据区

目录

1、程序计数器(Program Counter)

2、java虚拟机栈 (JVM Stacks)

3、本地方法栈 ( native method stacks)

4、直接内存 (Direct Memory)

5、方法区(method area)

6、堆内存(heap)


1、程序计数器(Program Counter)

每个线程都有自己的程序计数器,用来存储即将要执行的指令。

 

2、java虚拟机栈 (JVM Stacks)

一个栈帧集,每个方法都有一个独立的栈帧【Frame】,栈帧的结构如下

2.1 局部变量表(Local Variable Table)

2.2 操作数栈 (Operand Stack)

2.3 动态链接 (Dynamic Linking)

举例method1中调用了method2,执行都method2();这行代码的时候,会根据一个链接去方法区找这个方法的代码块,这个链接就是动态连接。

2.4 返回值地址(return address)

上一步调用完method2可能会返回一个值,这个值的地址,就是返回值地址。

 

3、本地方法栈 ( native method stacks)

native方法专用内存,不可调整,系统默认

4、直接内存 (Direct Memory)

JVM可以直接访问的内核空间的内存(OS管理的内存)

 

5、方法区(method area)

方法区是一个逻辑概念,永久区和元空间是方法区的具体实现。和Spring中IOC与DI的关系一样。

Perm Space(永久区,在1.8以前,方法区指的就是永久区),存储字符串常量,FGC不会清理

Meta Space(1.8以后,有了元空间的概念,字符串常量存储在堆中,会触发FGC清理) 

 

6、堆内存(heap)

新生代[用的拷贝算法]:新创建的对象存储的区域【Eden】,经过一次垃圾回收以后,放到S1,两次后到S2,多次回收后到Old区。

新生代【年轻代】空间耗尽时触发的GC叫:YGC/MinorGC  -轻GC

老年代【永久代】空间耗尽时触发的GC叫:FullGC/MajorGC -重量级GC

JVM中对象的生命周期图:

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值