请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师你好,关于元空间,永久区,还有方法区

老师你好,关于元空间,永久区,还有方法区这几个概念网上说法不一,元空间替代了原来的永久区,永久区原来就在堆内存空间,所谓的去永久代就是把永久区从堆空间剥离开来,形成JDK1.8的元空间,元空间主要存放静态变量,常量,运行时常量;这样可以缓解堆空间内存占用,减少FULL GC频率和堆的OOM发生概率,而方法区就是现在的元空间,我的理解对吗?

正在回答

1回答

同学好,在永久代没有被移除之前,是保存在方法区中的,而不是在堆中,因此堆不包括永久代。从JDK7开始永久代的移除工作,贮存在永久代的一部分数据已经转移到了Java Heap或者是Native Heap。但永久代仍然存在于JDK7,并没有完全的移除:符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap.JDK8之后永久代就被移除了。然后后面同学对元空间理解是正确的,元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信