采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师你好,关于元空间,永久区,还有方法区这几个概念网上说法不一,元空间替代了原来的永久区,永久区原来就在堆内存空间,所谓的去永久代就是把永久区从堆空间剥离开来,形成JDK1.8的元空间,元空间主要存放静态变量,常量,运行时常量;这样可以缓解堆空间内存占用,减少FULL GC频率和堆的OOM发生概率,而方法区就是现在的元空间,我的理解对吗?
同学好,在永久代没有被移除之前,是保存在方法区中的,而不是在堆中,因此堆不包括永久代。从JDK7开始永久代的移除工作,贮存在永久代的一部分数据已经转移到了Java Heap或者是Native Heap。但永久代仍然存在于JDK7,并没有完全的移除:符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap.JDK8之后永久代就被移除了。然后后面同学对元空间理解是正确的,元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14