JVM parameters in Java
我们依据JVM参数以-X扫尾或-XX扫尾将JVM参数分红两个部分:
1) 以-X扫尾的都长短规范的(这些参数其实不能包管在一切的JVM上都被完成),并且假如在新版本有甚么修改也不会宣布告诉。
2)以-XX扫尾的都是不波动的而且不引荐在生产情况中运用。这些参数的修改也不会宣布告诉。
当写完 Java Heap Size 和 Java Garbage Collection 两篇文章的时分我就开端思索写一片关于JVM参数的文章了,由于这两篇文章是关于JVM参数中首要的两个部分。 可是等我写了另外一篇关于OutOfMemeoryError的文章 JVM option to solve OutOfMemoryError in Java 后依然没有开端写……。如今我很高兴终究把这篇文章写完而且可以宣布了。像平常一样,我等待你们的反应,建议和其他我脱漏的可是你们以为有效的JVM参数
对呼应工夫请求很高的系统来讲,杰出把握JVM关于GC调优的参数是很主要的。比方一个高流量地延迟的电子买卖平台,他请求的呼应工夫都是毫秒级的。要取得合适的参数组合需求大量的剖析和不时的测验考试,更依靠于买卖系统的特征。
1) 布尔型参数选项:-XX:+ 翻开, -XX:- 封闭。(译者注:比方-XX:+PrintGCDetails)
2) 数字型参数选项经过-XX:=设定。数字可所以 m/M(兆字节),k/K(千字节),g/G(G字节)。比方:32K表现32768字节。(译者注:比方-XX:HeapDumpPath=./java_pid.hprof)
3) 字符行参数选项经过-XX:=设定,凡是用来指定一个文件,途径,或许一个号令列表。(译者注:比方-XX:+PrintGCDetails)
号令 java -help可以列出java 使用启动时规范选项(分歧的JVM完成是分歧的)。java -X可以列出不规范的参数(这是JVM的扩大特征)。-X相干的选项不是规范的,被改动也不会告诉。假如你想检查以后使用运用的JVM参数,你可使用:ManagementFactory.getRuntimeMXBean().getInputArguments()。
下面就是一些我常常用到的JVM参数列表。
1) 跟 Java 堆巨细相干的 JVM 内存参数
下面三个 JVM 参数用来指定堆的初始巨细和最大值和仓库巨细
-Xms 设置 Java 堆的初始化巨细 -Xmx 设置最大的 Java 堆巨细 -Xss 设置Java线程仓库巨细2) 关于打印渣滓搜集器概况的 JVM 参数
-verbose:gc 记载 GC 运转和运转工夫,普通用来检查 GC 能否是使用的瓶颈
-XX:+PrintGCDetails 记载 GC 运转时的具体数据信息,包含重生成工具的占用内存巨细和消耗工夫等
-XX:-PrintGCTimeStamps 打印渣滓搜集的工夫戳
3) 设置 Java 渣滓搜集器行动的 JVM 参数
-XX:+UseParallelGC 运用并行渣滓搜集
-XX:-UseConcMarkSweepGC 运用并发标记扫描搜集 (Introduced in 1.4.1)
-XX:-UseSerialGC 运用串行渣滓搜集 (Introduced in 5.0.)
需求提示的是,但你的使用长短常要害的、买卖十分频仍使用时,应当慎重运用 GC 参数,由于 GC 操纵是耗时的,你需求在这当中找到均衡点。4)JVM调试参数,用于远程调试
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
关于远程调试请浏览 How to Setup Java remote debugging in Eclipse and 10 Java debugging tips in Eclipse5) 关于功能诊断的 JVM 参数
-Xprof
-Xrunhprof6) 关于类途径方面的 JVM 参数
Xbootclasspath用来指定你需求加载,但不想经过校验的类途径。JVM 会对一切的类在加载行进行校验并为每一个类经过一个int数值来使用。这个是包管 JVM 波动的需要进程,但比拟耗时,假如你盼望跳过这个进程,就把你的类经过这个参数来指定。
7) 用于修正 Perm Gen 巨细的 JVM 参数
下面的这三个参数首要用来处理 JVM 过错: java.lang.OutOfMemoryError:Perm Gen Space.8) 用来跟踪类加载和卸载的信息
-XX:+TraceClassLoading和 -XX:+TraceClassUnloading 用来打印类被加载和卸载的进程信息,这个用来诊断使用的内存走漏问题十分有效。
9) JVM switches related to logging
-XX:+TraceClassLoading and -XX:+TraceClassUnloading print information class loads and unloads. Useful for investigating if you have a class leak or if old classes (like JITed Ruby methods in JRuby) are getting collected or not.You can read more about logging in Java on my post 10 Tips while logging in Java
10)用于调试目标的 JVM 开关参数
-XX:HeapDumpPath=./java_pid.hprof Path to directory or file name for heap dump.
-XX:-PrintConcurrentLocks Print java.util.concurrent locks in Ctrl-Break thread dump.
-XX:-PrintCommandLineFlags Print flags that appeared on the command line.
本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协定,假如我们的任务有进犯到您的权益,请实时联络我们。2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务