Java中成员变量分配在哪个空间?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中成员变量分配在哪个空间?相关的知识,希望对你有一定的参考价值。
变量分为成员变量和局部变量;成员变量又分为实例变量和静态变量;
实例变量在对象创建的时候分配内存空间,存储在堆内存中;
静态变量在类加载的时候分配内存空间,存储在元空间;
局部变量在方法执行时分配内存空间,存储在栈内存中。 参考技术A 首先,对象都在堆内存中。
然后,非静态成员变量肯定是属于一个对象的,所以非静态成员变量也在堆内存中。
至于静态成员变量,jdk8 之前在方法区,jdk8 开始在元空间。 参考技术B 保存在栈中!
Java对象的实例化过程
简单类对象的实例化过程:
-
在方法区加载类
-
在栈内存申请空间,声明变量P
-
在堆内存中开辟空间,分配对象地址
-
在对象空间中,对对象的属性进行默认初始化,类成员变量显示初始化
-
构造方法进栈,进行初始化
-
初始化完成后,将堆内存中的地址赋给引用变量,构造方法出栈
子类对象的实例化过程:
-
在方法区先加载父类,再加载子类
-
在栈中申请空间,声明变量P
-
在堆内存中开辟空间,分配对象地址
-
在对象空间中,对对象的属性(包括父类的属性)进行默认初始化
-
子类构造方法进栈
-
显示初始化父类的属性
-
父类构造方法进栈,执行完毕出栈
-
显示初始化子类的属性
-
初始化完毕后,将堆内存中的地址值赋给引用变量P,子类构造方法出栈
以上是关于Java中成员变量分配在哪个空间?的主要内容,如果未能解决你的问题,请参考以下文章