请稍等 ...
×

采纳答案成功!

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

正在回答

1回答

小伙伴你好,元空间是HotSpot在1.8及以后的特定实现,用来代替1.7和之前的永久代,不过元空间并不是JVM内存结构的规范,因为还有其他的虚拟机实现方式,所以课程里的结构图不应当包含元空间。

方法区是 JVM 规范中的定义,是堆的一个逻辑部分,整个虚拟机中只有一个方法区,而永久代是 JVM 规范的一种实现,并且只有在 HotSpot 虚拟机中如此,其他虚拟机中没有永久代的说法。

元空间是1.8加入用来代替永久代的,元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制,理论上取决于32位/64位系统可用内存的大小。


为什么要移除持久代,改成元空间?

从内因来说,持久代大小受到-XX:PermSize和-XX:MaxPermSize两个参数的限制,而这两个参数又受到JVM设定的内存大小限制,这就导致在使用中可能会出现持久代内存溢出的问题。而元空间使用的是直接内存,受本机可用内存的限制,不受到JVM内存大小的限制。

4 回复 有任何疑惑可以回复我~
  • 提问者 BingleyFeng #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2019-08-14 21:48:39
  • 悟空老师接下来还准备出什么课程吗?
    回复 有任何疑惑可以回复我~ 2019-09-06 04:11:58
  • 悟空 回复 慕勒4339842 #3
    出的,这个月10月11日会上线一门微课“并发编程的“基石”——多线程概念建立”,让小伙伴轻松理解并发中晦涩难懂但非常重要的系列概念:进程、线程、多线程、串并行、并发、高并发、同步异步、阻塞非阻塞等。
    然后明年会上线下一门实战课,主要讲这篇手记的内容:https://www.imooc.com/article/290027
    回复 有任何疑惑可以回复我~ 2019-09-06 09:54:49
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信