java虚拟机-d参数配置_JVM虚拟机参数介绍

慢慢学,每天进步一点点,总有一天会变成心目中向往的样子。

在这篇文章中将会介绍常用的JVM参数配置,以及每个参数的含义。

配置堆内存

每一JVM应用程序都有一个非常重要的配置,堆内存的配置,它影响这应用程序执行的性能。我们可以给程序配置一个最小的启动内存和最大占用内存的限制。就如下:

-Xms[unit]

-Xmx[unit]

这里的单位是内存初始化的单位支持g,m,k.g也就是GB,m也就是MB,k也就是KB。例如,我们可以设置最小启动内存为2GB,最大堆内存为5Gb,启动时候添加参数如下:

-Xms2G -Xmx5G

在Java 8 中MetaSpace的大没有设置,如果它打包了全局配置的最大值,JVM回去自动增涨它。如果要克服这个不稳定的问题,我们需要设置:

-XX:MaxMetaspaceSize=[unit]

这里MetaspaceSize表示我们配置给MetaSpace区的内存大小。在JVM设置中,内存第二个重要的地方是这是JVM年轻代gc的限制大小,默认gc的最小大小是1310MB,最大值则没有限制,设置方法如下:

-XX:NewSize=[unit]

-XX:MaxNewSize=[unit]

垃圾回收

为了有一个更加稳定的服务,选择一个合适的垃圾回收算法非常重要。JVM有许多种垃圾回收算法: Serial Garbage Collector Parallel Garbage Collector CMS Garbage Collector G1 Garbage Collector 选择哪一种实现,可以使用如下方式指定:

-XX:+UseSerialGC

-XX:+UseParallelGC

-XX:+USeParNewGC

-XX:+UseG1GC

GC日志

为了监控应用的监控情况,我们必须检查JVM的GC情况,最简单的方式将GC日志输出为便于阅读的形式,如何配置能够打印GC日志:

-XX:+UseGCLogFileRotation

-XX:NumberOfGCLogFiles=< number of log files >

-XX:GCLogFileSize=< file size >[ unit ]

-Xloggc:/path/to/gc.log

UseGCLogFileRotation指定了GC日志文件创建策略,就想log4j,sl4j一样。NumberOfGCLogFiles指定的是单个JVM应用在其生命周期中最多能创建GC日志文件的数量。GCLogFileSize指定GC日志单个文件体积最大值,loggc指定了日子文件的路径。

要说明的是,这里还有个JVM关于GC日志的参数,他们控制日志打印的时间,分别是:XX:+PrintGCTimeStamps和XX:+PrintGCDateStamps。

例如:我们要定义,GC日志数量最多100个文件,单个文件的最大体积是50M,日志打印的路径是/home/user/log,我们可以使用如下的配置:

-XX:+UseGCLogFileRotation

-XX:NumberOfGCLogFiles=10

-XX:GCLogFileSize=50M

-Xloggc:/home/user/log/gc.log

控JVM GC是需要一个单独的线程在后台执行的,他会消耗一部分的性能,这个是你要注意的地方。

处理内存溢出问题

一个非常大的问题是:JVM应用程序都会面临着内存溢出的问题,导致程序中途crash,这样的问题非常难以复现,以至于很难去找到问题的原因。

JVM提供了一些参数,保证程序在内存溢出的时候能够将当前的堆信息保存在磁盘上,以至于你事后能更具这个快照信息找到问题根源:

-XX:+HeapDumpOnOutOfMemoryError

-XX:HeapDumpPath=./java_pid.hprof

-XX:OnOutOfMemoryError="< cmd args >;< cmd args >"

-XX:+UseGCOverheadLimit

HeapDumpOnOutOfMemoryError表示dump堆信息到磁盘,HeapDumpPath是这只dump文件的文件路径和文件名,可以是任意的文件名,如果文件名中包含,会被替换成JVM应用的pid。OnOutOfMemoryError是在发送内存溢出的时候执行的命令,例如:我想在内存溢出的时候重启服务器。

-XX:OnOutOfMemoryError="shutdown -r"

UseGCOverheadLimit设置GC消失时间的百分比限制,如果GC时间过长,超过了这个限制,那么就会触发内存溢出错误。

32/64设置

JVM有一种运行模式:32模式,64模式。JVM默认是使用32模式运行。如果你要设置他,可以这样设置:

-d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值