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

jvm内存配置参数如下

  • 内存
  • 2024-05-01 14:01:50
  • 560

一、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添加参数来输出.GC日志中的JVM参数。

您还可以将-XX:+PrintFlagsFinal参数添加到启动参数中。这将打印出系统的所有参数,使您可以查看已设置的参数或系统的默认参数。

3)GC日志:

每次垃圾回收时都会生成以下日志。例如,该GC的第4行描述了其执行情况。log:

详细信息如下。

2020-09-25T13:00:41.631+0800:发生GC时。
4.013:系统运行后发生GC所需的时间(以秒为单位)。这是系统运行4.013秒后发生的GC。
GC(AllocationFailure):描述触发GC的原因。在这种情况下,我们指的是由于对象分配失败而导致的GC。
PSYoungGen:指使用ParallelScavenge垃圾收集器触发年轻代垃圾收集。
419840K->20541K:GC在年轻代上运行。在GC之前,年轻一代使用了419840K。GC后,还剩下20541K对象。
(472064K):年轻代的可用空间为472064K,即461M。为什么是461M?新生代的大小为512M,所以Eden区占用409.6M,两个survivor区各占用51.2M,所以年轻代的可用空间为Eden+1Survivor的大小,即460.8M即可。大约是461M。
419840K->20573K:GC前使用的总堆内存为419840K,GC后使用的总堆内存为20573K。
(996352K):总堆大小为996352K,实际上是973M。年轻代461M+老一代512M。
0.0118345秒:本次GC花费的时间。
Time:user=0.00sys=0.00,real=0.01secs:本次GC花费的时间
4)JVM终止时的GC状态:

程序终止后,日志为将被输出(第12行)。在后续日志中,此部分将显示当前堆内存使用情况。

详情如下。


二、64g内存服务器+jvm参数?

如果您的服务器有64GB内存,您可以使用以下JVM选项来优化Java程序的性能:

-Xmx:设置最大Java堆内存使用量。建议将此设置设置为总内存的50%到80%之间。例如,可以设置为-Xmx48g,这意味着Java堆最多可以使用48GB内存。

-Xms:设置初始Java堆内存使用量。建议将此参数设置为总内存的25%到50%之间。例如,您可以将其设置为-Xms16g,这意味着Java堆最初使用16GB内存。

-Xmn:设置下一代内存使用情况。建议将此参数设置为Java堆的1/4到1/3。例如可以设置为-Xmn16g,表示新一代使用16GB内存。

-XX:+UseG1GC:使用G1垃圾收集器,它是服务器应用程序的垃圾收集器,可以高效管理堆内存。

-XX:MaxGCPauseMillis:设置最大垃圾收集器暂停时间。建议将此参数设置为200到500毫秒之间的值。例如,可以设置为-XX:MaxGCPauseMillis=200,表示最大暂停时间为200毫秒。

-XX:+HeapDumpOnOutOfMemoryError:发生内存溢出时创建堆转储文件。可以通过分析堆转储文件来检测内存泄漏等问题。

-XX:HeapDumpPath:指定堆转储文件的保存路径。

JVM参数示例:

java-Xmx48g-Xms16g-Xmn16g-XX:+UseG1GC-XX:MaxGCPauseMillis=200-XX:+HeapDumpOnOutOfMemoryError-XX:HeapDumpPath=/path/to/dump/file-jaryour_

注意。JVM参数设置应根据您的具体情况进行调整。如果你的应用程序内存占用较小,可以相应减少-Xmx和-Xms参数;如果应用程序的性能出现问题,您可以尝试调整与垃圾收集器相关的设置。