【JVM】内存结构-堆栈方法区交互

本文详细介绍了Java程序的运行流程,包括虚拟机栈、本地方法栈、堆、方法区及其交互。堆内存分为新生区、幸存区和老年区,常量池在不同JVM版本中有变化。栈内存溢出表现为StackOverflowError,堆内存溢出为OOM。
摘要由CSDN通过智能技术生成

java程序运行流程

在这里插入图片描述
虚拟机栈stack: 先进后出,存放8大基本类型以及方法和变量的引用。 线程私有。
本地方法栈 native method stack:带native修饰的,调用的不是Java语言写的代码。线程私有
堆Heap: 堆中存放new出来的对象,栈中的对象引用指向堆中的对象实例。线程共享
方法区 Method Area:是一个特殊的堆,所有字段和方法字节码,以及一些特殊符号,如构造函数,接口代码也在此定义,简单说,所有定义的方法的信息都保存在该区域。 还存放static、 final 和Class的元数据(并非Class的对象,Class对象是加载的最终产品) ,运行常量池 存放在方法区中。共享区域
程序计数器: 是一个记录着当前线程所执行的字节码的行号指示器,内存很小。线程私有
常量池:
分为静态常量池和运行时常量池。

  • 所谓静态常量池,即*.class文件中的常量池,class文件中的常量池不仅仅包含字符串(数字)字面量,还包含类、方法的信息,占用class文件绝大部分空间。
  • 而运行时常量池,则是jvm虚拟机在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值