老师,那个jvm内存结构图,那是jdk1.7的,jdk1.8还有元空间metaspace

来源:12-4 相关概念

BingleyFeng

2019-08-14

写回答

1回答

悟空

2019-08-14

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

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

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


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

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

4
3
悟空
回复
慕勒4339842
出的,这个月10月11日会上线一门微课“并发编程的“基石”——多线程概念建立”,让小伙伴轻松理解并发中晦涩难懂但非常重要的系列概念:进程、线程、多线程、串并行、并发、高并发、同步异步、阻塞非阻塞等。 然后明年会上线下一门实战课,主要讲这篇手记的内容:https://www.imooc.com/article/290027
2019-09-06
共3条回复

线程八大核心+Java并发原理及企业级并发解决方案

完整的并发知识网络+丰富的工作内容分享+50余道并发高频面试题

2512 学习 · 939 问题

查看课程