本文章涉及到的代码案例已上传到 https://github.com/xtxxtxxtx/JUC_JVM
三、堆参数调优入门
3.1、Java垃圾收集
Java7
Java8
JDK1.8之后就将最初的永久代取消了由元空间取代。
Java8中永久代已经被移除,被一个称为元空间的区域所取代。元空间的本质和永久代类似。
元空间与永久代之间最大的区别在于:
永久代使用的JVM的堆内存,但是Java8以后的元空间并不在虚拟机中而是使用本机物理内存。
因此默认情况下,元空间大小仅受本地内存限制。类的元数据放入native menory字符串池和类的静态变量放入Java堆中,这样可以加载多少类的元数据就不再由MaxPermSize控制,而由系统的实际可用空间来控制。
3.2、堆内存调优
发现默认情况下分配的内存是总内存的"1/4",初始化内存为"1/64"
下面演示一个OOM的错误: