请问如下例子的内存分配情况
来源:1-2 JVM内存结构详解
慕才子
2020-10-18 09:52:49
# 具体遇到的问题
还是不是特别清楚各种东西到底是放在哪块内存区域的。期望老师以如下的一个例子做一个说明,感激涕零~
# 报错信息的截图
# 相关课程内容截图
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
class B { } public class A { public static final String a = "111"; public static final B b = new B(); public final B c = new B(); public final String d = "222"; public String e = "3333"; public B f = new B(); public String g = new String("444"); }
1回答
目前A没有被new,只有static的变量会分配。
a,b会分配,在类加载时,分配到方法区中(JDK 8中,是在堆里)
========
如果A被new了,那么:
a、b在类加载时,分配到方法区中(JDK 8中,是在堆里)
c的引用在栈,值在运行时常量池(JDK 8中,在元空间)
d的引用在栈,值在字符串常量池
efg的引用在栈,值在堆中。
相似问题