JVM笔记八-堆参数调优
JVM垃圾收集器(JavaGarbageCollection)。本教程均在JDK1.8+HotSpot为例来讲解的.先来看看Java7的:再来看看Jva8的可以看出,java8之后换成了元空间。那么怎么证明,堆区是有新生代、永久代、元空间三部分组成的呢?OOM这个错误我们都熟悉,那么怎么手动制造出一个OOM呢?如果16G的物理内存,JVM堆内存能够分到多少G的内存空间呢?我们带着这些疑问来一起学习
JVM垃圾收集器(Java Garbage Collection)。本教程均在JDK1.8+HotSpot为例来讲解的.
先来看看Java7的:

再来看看Jva8的

可以看出,java8之后换成了元空间。那么怎么证明,堆区是有新生代、永久代、元空间三部分组成的呢?OOM这个错误我们都熟悉,那么怎么手动制造出一个OOM呢?如果16G的物理内存,JVM堆内存能够分到多少G的内存空间呢?我们带着这些疑问来一起学习吧
在Java8中,永久带已经被移除了,被一个称为元空间的区域所取代。元空间的本质和永久带类似。
元空间与永久带之间最大的区别在于:
永久带使用的是JVM的堆内存空间,但是java8以后的元空间并不是虚拟机中的空间,而是使用了本机的物理内存空间的。
因此,默认情况下,元空间大小仅受到本地内存大小的限制。类的元数据放入native memory,字符串常量池和静态类变量存放在java堆区中。这样可以加载多少类的元数据,就不在由MaxPermSize控制了,而是由系统的实际可用空间来控制。
Java默认堆区空间大小是物理内存的六十四分之一(1/64).默认最大堆空间是物理内存的1/4
想要对JVM调优的话,就先要知道自己的家底。默认情况下,当前服务的JVM最大和最小内存是多少呢?怎么查看呢?
我们可以使用Runtime这个类来
原创不易,完成人机校验,阅读全文