1)JVM内存分配有以下参数:
一般情况下,-Xms和-Xmx设置相同的大小,-XX:MetaspaceSize和-XX:MaxMetaspaceSize设置相同的大小。-Xms相当于-XX:InitialHeapSize,-Xmx相当于-XX:MaxHeapSize,-Xmn相当于-XX:MaxNewSize。
2)在IDEA中可以设置JVM参数,如下:
3)从命令行启动时,可以设置格式如下:
1)设置GC参数:
启动时可以添加以下参数来查看GC日志:
例如,我在IDEA启动参数中添加了如下JVM:
启动程序后打印如下日志:
从CommandLineflags第三行可以获取到如下信息:
2)查看默认参数:
如果想查看默认的JVM参数,可以添加打印GC日志到JVM的参数,就可以看到默认的JVM参数在GC寄存器中。
您还可以在启动参数中添加-XX:+PrintFlagsFinal参数,该参数会打印所有系统参数,您可以看到您已配置的参数或默认的系统参数:
3)GC日志:
以下日志为每次日志垃圾回收时产生的日志:
详细信息如下:
2020-09-25T13:00:41.631+0800:GC发生的时间点。
4.013:系统运行后多长时间发生GC,单位为秒这里是系统运行4.013秒后发生的GC。
GC(AllocationFailure):描述触发GC的原因,这里指的是对象分配失败导致的GC。
PSYoungGen:指触发年轻代的垃圾收集,使用ParallelScavenge垃圾收集器。
419840K->20541K:对新生代进行了一次GC,新生代使用了419840K、20541K对象。
(472064K):新生代的可用空间是472064K,也就是461M为什么是461M?因为新生代的大小为5.12亿,Eden区占用4.096亿米,两个Survivor区各占用5120万,所以新生代的可用空间为Eden+1Survivor的大小,即4.608亿。约为4.61亿。
419840K->20573K:GC前所有堆内存使用419840K,GC后堆内存使用20573K。
(996352K):整个堆大小为996352K,实际上是973M,新生代中为461M+老年代中为512M
0.0118345seks:本次GC所花费的时间。
Times:user=0.00sys=0.00,real=0.01seks:本次GC花费的时间
4)JVM退出时的GC情况:
程序完成后,有的会打印日志,即第12行,在下面的日志中,这部分显示了当前堆内存的使用情况:
详细信息如下:
上一篇:jvm内存详解
下一篇:jvm内存模型和jvm内存结构