静态变量存在JVM哪个区
如题
昨天面试跟面试官杠起来了,我说JDK1.7之后静态变量存在堆中,然后他说静态变量存在元空间,我就说存在堆。最后我看有点尴尬就附和他说元空间。友友们,静态变量到底存在哪里,还有遇到这种事情我该不该跟他杠到底
昨天面试跟面试官杠起来了,我说JDK1.7之后静态变量存在堆中,然后他说静态变量存在元空间,我就说存在堆。最后我看有点尴尬就附和他说元空间。友友们,静态变量到底存在哪里,还有遇到这种事情我该不该跟他杠到底
全部评论
堆。不过这种问题毫无意义,你入职半年以内都不可能接触到JVM的问题,他自己都够呛能解决一次gc
你是对的。 static变量的元数据是存元空间,但是其数值是在堆里。
你可以试试看分配超大的static数组,是堆溢出。
我只知道CPP有全局/static区,评论区都说堆,看来CPP和JAVA内存这块不太一样
我记得存在堆里面的对象class里面,元空间里面有个指针指向这个class
但是八股啥的都直接说的在元空间
1.7开始,静态变量从永久代中移出到堆中,1.8的静态变量也仍然在堆中,元空间放的是类的元数据和运行时常量池。
在元空间吧,运行时常量池和类变量
静态变量在堆里
静态变量存储在方法区。永久带和元空间是方法区的具体实现,1.8 以及之后的版本将永久带替换成元空间了。方法区是通过堆的元空间来实现的。
面试官说啥都是对的😂,你和他争什么
相关推荐