第五讲、java栈区、堆区、方法区自我总结

第五讲、java栈区、堆区、方法区自我总结

该篇为自我总结,内容参考zhiman:Java方法区、栈及堆

一、方法区

主要存储:类信息、常量、静态变量、即时编译器编译后的代码

1、类信息

类型(类class、接口interface、枚举enum、注解annotation)加载时,jvm会将类的信息储存在方法区中,包含:
类型的完整有效名、其父类的完整有效名、类型的修饰符(public、abstract、final等)、类型常量池、方法信息、静态变量等。

2、常量

3、静态变量

关于存储引用数据类型的静态变量,存储的将会是引用类型的对象的地址。

4、即时编译器编译后的代码

程序运行时会加载类编译生成的字节码,在这个过程中静态变量、静态方法、普通方法对应的字节码加载到方法区。

二、栈区

方法有进栈和出栈

  • 当方法进栈时,都会创建一个栈帧,用来储存局部变量表、操作数栈、动态链接、方法的进出口信息等。
  • 方法进栈时,会将方法中的变量和引用都储存在栈中。所以,栈中的变量都是局部变量。
  • 八种基本数据类型(byte short int long float double char boolean)在存储到栈中的时候,存储的将会是它们具体的值。
  • 引用数据类型存储时,储存的将会是实例对象在堆区中的内存地址;引用类型没有初始化对象,那储存的将会是null。

三、堆区

  • 主要存储实例化对象。也就是“new出来的对象”
  • 数组也是实例化的对象,规范定义数组因该是 int[] arr = new int[]{12,13,14}; 也是通过new出来的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值