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

jvm查看堆内存使用情况(查看当前jvm内存设置)

  • 内存
  • 2024-05-02 22:55:31
  • 872

一、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日志:

例如我接下来JVM添加了IDEA启动参数:

启动程序后,打印如下日志:

从CommandLineflags第三行可以获取以下信息:

2)查看默认参数:

如果想查看默认的JVM选项,可以在JVM中添加打印GC日志的选项,就可以看到默认的选项。GC日志中的JVM参数。

您还可以在启动选项中添加-XX:+PrintFlagsFinal参数,该参数会打印所有系统参数,您可以看到您配置的或默认的系统参数:

3)GC日志:

以下日志是每次垃圾回收过程中生成的日志。每条日志行都描述该GC的执行情况。例如第四行GC。log:

详细信息如下:

2020-09-25T13:00:41.631+0800:发生垃圾回收的时间点。
4.013:系统运行后多久才出现GC,单位为秒。这是系统运行4.013秒后发生的一次GC。
GC(AllocationFailure):描述运行GC的原因。这里我们讨论的是对象分配失败导致的GC。
PSYoungGen:指使用ParallelScavenge垃圾收集器运行年轻代垃圾收集。
419840K->20541K:GC是为年轻一代设计的。在GC之前,年轻一代使用了419840K。GC后,保留了20541K对象。
(472064K):年轻代可用空间为472064K,即461M。为什么是461M?由于新生代的大小为512MB,Eden区占用409.6MB,两个Survivor区各占用51.2MB,所以年轻代的可用空间等于Eden+1Survivor的大小,也就是460.8MB,大约是461M。
419840K->20573K:GC前整个内存堆使用了419840K,GC后内存堆使用了20573K。
(996352K):整个堆的大小为996352K,即973M。实际上是年轻代461M+老年代512M
0.0118345sec:本次GC花费的时间。
time:user=0.00sys=0.00,real=0.01secs:本次GC花费的时间。
4)退出JVM时的GC情况:

程序退出后,有些将打印日志(第12行)。在后续的日志中,这部分显示了当前堆内存的使用情况:

详细信息如下: