<返回更多

常见的JVM参数配置

2020-05-21    
加入收藏

概述

在这篇文章中,我们将一起看一下,一些常见的JAVA虚拟机的参数配置。

内存 - Xms 和 Xmx配置

堆内存配置,可以说是应用程序中,最常见的提升性能的参数配置。

这就是为什么我们需要指定最大和最小堆内存配置:

-Xms<heap size>[unit] 
-Xmx<heap size>[unit]

在这里,unit 表示要初始化内存(用堆大小表示)的单元。 单位可以标记为“ g”代表 GB,“ m”代表 MB,“ k”代表 KB。

例如,如果我们想给 JVM 分配最小的2gb 和最大的5Gb,我们需要写:

-Xms2G -Xmx5G

从 java8开始,Metaspace 的大小没有定义。 一旦它达到全局限制,JVM 会自动增加它,然而,为了克服任何不必要的不稳定性,我们可以设置 Metaspace 大小为:

-XX:MaxMetaspaceSize=<metaspace size>[unit]

在这里,metaspace size表示我们要分配给元空间的内存量。

根据 Oracle 的参考指南,除了总的可用内存之外,第二大影响因素是为年轻代保留的堆的比例。 默认情况下,YG(年轻代) 的最小大小为1310 MB,最大大小不受限制。

我们也可以显示的设置年轻代的大小:

-XX:NewSize=<young size>[unit] 
-XX:MaxNewSize=<young size>[unit]

垃圾收集

为了提高应用程序的稳定性,选择正确的垃圾收集算法至关重要。有四种类型的 GC 实现:

这些实现可以使用以下参数声明:

-XX:+UseSerialGC
-XX:+UseParallelGC
-XX:+USeParNewGC
-XX:+UseG1GC

GC 日志

为了严格监视应用程序的运行状况,我们应该始终检查 JVM 的垃圾收集性能。 最简单的方法是以可读的格式记录 GC 日志。

使用以下参数,我们可以记录 GC 活动:

-XX:+UseGCLogFileRotation 
-XX:NumberOfGCLogFiles=< number of log files > 
-XX:GCLogFileSize=< file size >[ unit ]
-Xloggc:/path/to/gc.log

在这里,UseGCLogFileRotation 指定日志文件滚动策略,很像 log4j、 sl4j 等。 NumberOfGCLogfFles 表示可以为单个应用程序生命周期编写的日志文件的最大数量。 GCLogFileSize 指定文件的最大大小。 最后,loggc 表示它的位置。

这里需要注意的是,还有两个可用的 JVM 参数(- XX: + PrintGCTimeStamps 和-XX: + PrintGCDateStamps)可用于在 GC 日志中打印日期时间戳。

例如,如果我们希望分配最多100个 GC 日志文件,每个文件的最大大小为50 MB,并希望将它们存储在‘/home/user/log/ ’位置,我们可以使用以下语法:

-XX:+UseGCLogFileRotation  
-XX:NumberOfGCLogFiles=10
-XX:GCLogFileSize=50M 
-Xloggc:/home/user/log/gc.log

但是,问题是总是在后台使用一个附加的守护进程来监视系统时间。 这种行为可能会造成一些性能瓶颈; 这就是为什么在生产中最好不要使用这个参数的原因。

OOM的处理

对于大型应用程序来说,遇到OOM是非常常见的,OOM会导致应用程序崩溃。 这是一个非常关键的场景,很难复制以解决问题。

这就是为什么 JVM 提供了一些参数,这些参数将堆内存转储到一个物理文件中,以后可以用来查找内存泄漏:

-XX:+HeapDumpOnOutOfMemoryError 
-XX:HeapDumpPath=./java_pid<pid>.hprof
-XX:OnOutOfMemoryError="< cmd args >;< cmd args >" 
-XX:+UseGCOverheadLimit

这里有几点需要注意:

-XX:OnOutOfMemoryError="shutdown -r"

32/64位

在同时安装了32位和64位包的操作系统环境中,JVM 会自动选择32位环境包。如果我们想手动设置环境为64位,我们可以使用下面的参数:

-d<OS bit>

Misc(其他一些参数)

总结

在这篇简短的文章中,我们了解了一些重要的 JVM 参数,这些参数可用于调优和提高应用程序性能,其中一些还可以用于调试。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>