1.JVM运行时内存区域划分
内存区域划分:程序计数器;本地方法栈;Java虚拟栈;方法区和堆
2.内存溢出和堆溢出的示例及原因、如何排查和解决
方法区和永久代以及元空间?
1、永久代、元空间是方法区的两种实现方式。
2、永久代是 JDK 1.8 之前的方法区实现,JDK 1.8 及以后方法区的实现变成了元空间。
为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?
1、永久代有一个 JVM 本身设置的固定大小上限,无法进行调整
2、元空间使用的是本地内存
3、元空间参数:
-XX:MetaspaceSize=N //设置 Metaspace 的初始(和最小大小)
-XX:MaxMetaspaceSize=N //设置 Metaspace 的最大大小