一行命令获取当前JVM所有可设置的参数以及当前默认值
2016-03-10 16:05
211 查看
一行命令获取当前JVM所有可设置的参数以及当前默认值
java -XX:+PrintFlagsInitial >>1.txt
然后查看这个1.txt即可
[plain] view plaincopy
uintx AdaptivePermSizeWeight = 20 {product}
uintx AdaptiveSizeDecrementScaleFactor = 4 {product}
uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product}
uintx AdaptiveSizePausePolicy = 0 {product}
uintx AdaptiveSizePolicyCollectionCostMargin = 50 {product}
........
........
具体的参数含义可以百度,当然也可以去查找open JDK的源码查看
另外给一个目前我个人觉得不错的eclipse JVM参数
JDK 6 下:
[plain] view plaincopy
-vmargs
-Xverify:none
-client
-XX:-UseSplitVerifier
-Dosgi.requiredJavaVersion=1.6
-Xms256m
-Xmx256m
-XX:MaxPermSize=200m
-XX:PermSize=200m
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:CompileThreshold=1000
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UseBiasedLocking
-XX:CMSFullGCsBeforeCompaction=5
-XX:+UseCMSCompactAtFullCollection
-XX:+UseThreadPriorities
-XX:+MaxFDLimit
-XX:-DontCompileHugeMethods
-XX:InitialCodeCacheSize=128m
-XX:ReservedCodeCacheSize=128m
Java程序员有时候需要了解JVM相关的参数,不管是出于好奇或者工作需要。Oracle的文档中列出了一些,(点击这里),单并不是全部,而且有些参数的设置会默认启用或者关闭其他一些参数,而在某些情况下设置某个参数是不会生效的。还有些时候你想让JVM做某些事情,但是你不知道那个参数可以用。下面介绍一些办法用以列出所有参数,这样你在研究或者Google的时候也比较有明确的目标。
如果你想查看一下线上正在运行的JVM到底设置了那些参数,生效的是那些,可能用到的方法:
1. 在Linux下用ps命令找到启动Java应用时的参数
[java] view plaincopyprint?
ps -ef | grep "your java app name"
这个命令会打出你启动Java应用时传给java命令的所有参数,你可以看到里面的JVM参数。
2.直接看启动脚本,或者参数配置
你未必能找到所有设置这JVM参数的地方,容易遗漏。
一般来讲以上两种办法都需要对JVM了如指掌或者非常熟悉,至少对特定的参数。
其实JVM中有一个参数-XX:+PrintFlagsFinal,可以打印出几乎所有的JVM支持的参数以及他们的默认值。如果你想要查看你的Java应用到底使用了那些参数,只要在启动的时候加上这个参数就可以了。
1.查看你使用的JDK支持的参数
[java] view plaincopyprint?
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
2.打印Java应用启用的JVM参数
[java] view plaincopyprint?
java -XX:+PrintFlagsFinal -classpath=/path/to/your/libs MainClass
3.如果你的Java应用已经是运行状态了,你想查看某个JVM参数生效没有可以使用jinfo这个工具。比如说大名鼎鼎的G1垃圾回收器,在JDK7update3中不论是客户端(-client)还是服务器(-server)模式下都不是默认启动的。
jinfo是随JDK一起发布的,使用时先用jps找到Java应用的pid。直接运行jinfo可以查看使用说明。
[java] view plaincopyprint?
jinfo -flag UseParallelOldGC 31072
[java] view plaincopyprint?
-XX:+UseParallelOldGC
JDK中实用的工具还很多,可以逐个的体验一下${JAVA_HOME}/bin目录中的每个命令,有惊喜。
/article/2826535.html
/article/9182930.html
java -XX:+PrintFlagsInitial >>1.txt
然后查看这个1.txt即可
[plain] view plaincopy
uintx AdaptivePermSizeWeight = 20 {product}
uintx AdaptiveSizeDecrementScaleFactor = 4 {product}
uintx AdaptiveSizeMajorGCDecayTimeScale = 10 {product}
uintx AdaptiveSizePausePolicy = 0 {product}
uintx AdaptiveSizePolicyCollectionCostMargin = 50 {product}
........
........
具体的参数含义可以百度,当然也可以去查找open JDK的源码查看
另外给一个目前我个人觉得不错的eclipse JVM参数
JDK 6 下:
[plain] view plaincopy
-vmargs
-Xverify:none
-client
-XX:-UseSplitVerifier
-Dosgi.requiredJavaVersion=1.6
-Xms256m
-Xmx256m
-XX:MaxPermSize=200m
-XX:PermSize=200m
-XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:CompileThreshold=1000
-XX:+UseStringCache
-XX:+UseFastAccessorMethods
-XX:+UseBiasedLocking
-XX:CMSFullGCsBeforeCompaction=5
-XX:+UseCMSCompactAtFullCollection
-XX:+UseThreadPriorities
-XX:+MaxFDLimit
-XX:-DontCompileHugeMethods
-XX:InitialCodeCacheSize=128m
-XX:ReservedCodeCacheSize=128m
Java程序员有时候需要了解JVM相关的参数,不管是出于好奇或者工作需要。Oracle的文档中列出了一些,(点击这里),单并不是全部,而且有些参数的设置会默认启用或者关闭其他一些参数,而在某些情况下设置某个参数是不会生效的。还有些时候你想让JVM做某些事情,但是你不知道那个参数可以用。下面介绍一些办法用以列出所有参数,这样你在研究或者Google的时候也比较有明确的目标。
如果你想查看一下线上正在运行的JVM到底设置了那些参数,生效的是那些,可能用到的方法:
1. 在Linux下用ps命令找到启动Java应用时的参数
[java] view plaincopyprint?
ps -ef | grep "your java app name"
这个命令会打出你启动Java应用时传给java命令的所有参数,你可以看到里面的JVM参数。
2.直接看启动脚本,或者参数配置
你未必能找到所有设置这JVM参数的地方,容易遗漏。
一般来讲以上两种办法都需要对JVM了如指掌或者非常熟悉,至少对特定的参数。
其实JVM中有一个参数-XX:+PrintFlagsFinal,可以打印出几乎所有的JVM支持的参数以及他们的默认值。如果你想要查看你的Java应用到底使用了那些参数,只要在启动的时候加上这个参数就可以了。
1.查看你使用的JDK支持的参数
[java] view plaincopyprint?
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version
2.打印Java应用启用的JVM参数
[java] view plaincopyprint?
java -XX:+PrintFlagsFinal -classpath=/path/to/your/libs MainClass
3.如果你的Java应用已经是运行状态了,你想查看某个JVM参数生效没有可以使用jinfo这个工具。比如说大名鼎鼎的G1垃圾回收器,在JDK7update3中不论是客户端(-client)还是服务器(-server)模式下都不是默认启动的。
jinfo是随JDK一起发布的,使用时先用jps找到Java应用的pid。直接运行jinfo可以查看使用说明。
[java] view plaincopyprint?
jinfo -flag UseParallelOldGC 31072
[java] view plaincopyprint?
-XX:+UseParallelOldGC
JDK中实用的工具还很多,可以逐个的体验一下${JAVA_HOME}/bin目录中的每个命令,有惊喜。
/article/2826535.html
/article/9182930.html
相关文章推荐
- Lucene/Solr 中文分词比较
- Hadoop,Spark和Storm
- Can't find bundle for base name configure, locale zh_CN
- RandomStringUtils
- httpclient Invalid use of SingleClientConnManager: connection still alloc
- java将svg图片转换为png格式图片
- 多线程处理的几种模式—Proactor和Reactor
- elasticsearch集群搭建
- expected single matching bean but found 2
- 关于web端的单点登录实践
- JVM致命错误日志(hs_err_pid.log)分析
- Spark分布式计算和RDD模型研究
- storm的指南
- Unix下的五种I/O模型图
- Spark官方文档: Spark Configuration(Spark配置)
- Lucene 评分(score)机制--Document Boost和Field Boost
- ElasticSearch的工作机制
- [摘选]memcached全面剖析—— 客户端选择(一致性哈希算法)
- Spring MVC 4.1 使用ResponseBodyAdvice支持jsonp
- 深入浅出Future Pattern