当前位置:首页 > 内存 > 正文

jvm的内存结构(jvm内存是什么)

  • 内存
  • 2024-06-03 09:31:49
  • 2132

一、JVM性能调优(2)——内存设置和查看GC日志

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行,在下面的日志中,这部分显示了当前堆内存的使用情况:

详细信息如下: