JVM中对象及常量、局部变量、全局变量的存储位置

栈区(stacksegment)—由编译器自动du分配释放,存放函数的参数zhi值,局部变量的值等,具体方法dao执行结束之后,系统自动释放JVM内存资源。

堆区(heapsegment)—一般由程序员分配释放,存放由new创建的对象和数组,jvm不定时查看这个对象,如果没有引用指向这个对象就回收。

Java中没有全局变量的概念,变量分为类的成员变量、静态成员变量和方法中的局部变量。

先说局部变量,基本类型的局部变量变量名和值都存放在虚拟机栈中,引用类型的局部变量变量名存放在栈中,而变量指向的对象存放在堆中。

再说类的成员变量,不论基本类型还是引用类型,变量名和值都随着类的实例(对象)存放在堆中。

最后说说静态变量,它比较特殊,是属于类的变量,在jdk7及之前的版本,随类存放在方法区中。在jdk8之后,由于虚拟机内存结构的变化,静态变量和常量池一起被迁移到了堆中。

总结如下:

1.Java中对象的存储位置

String aa = new String();

new创建的对象存储在堆内存中;

aa这个局部变量存储在栈内存中;

2.Java中常量的存储位置

常量存放在常量池中,而常量池在堆内存中

3.Java中局部变量的存储位置

局部变量存放在栈内存中

4.Java中全局变量的存储位置

存放在全局数据区内存中-堆中

5.Java中Static常量的存储位置

存放在全局数据区内存中-堆中

6.java中static修饰的成员变量及参数存放位置

1.7存放在方法区 1.8存放在堆中

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值