`
m635674608
  • 浏览: 5028686 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

打印所有的jVM参数及其默认值

 
阅读更多

 Java程序员有时候需要了解JVM相关的参数,不管是出于好奇或者工作需要。Oracle的文档中列出了一些,(点击这里),单并不是全部,而且有些参数的设置会默认启用或者关闭其他一些参数,而在某些情况下设置某个参数是不会生效的。还有些时候你想让JVM做某些事情,但是你不知道那个参数可以用。下面介绍一些办法用以列出所有参数,这样你在研究或者Google的时候也比较有明确的目标。

    如果你想查看一下线上正在运行的JVM到底设置了那些参数,生效的是那些,可能用到的方法:

    1. 在Linux下用ps命令找到启动Java应用时的参数

    ps -ef | grep "your java app name"  
ps -ef | grep "your java app name"

    这个命令会打出你启动Java应用时传给java命令的所有参数,你可以看到里面的JVM参数。

    2.直接看启动脚本,或者参数配置

    你未必能找到所有设置这JVM参数的地方,容易遗漏。

    一般来讲以上两种办法都需要对JVM了如指掌或者非常熟悉,至少对特定的参数。

   

    其实JVM中有一个参数-XX:+PrintFlagsFinal,可以打印出几乎所有的JVM支持的参数以及他们的默认值。如果你想要查看你的Java应用到底使用了那些参数,只要在启动的时候加上这个参数就可以了。

    1.查看你使用的JDK支持的参数

java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version  
java -XX:+UnlockDiagnosticVMOptions -XX:+PrintFlagsFinal -version

    2.打印Java应用启用的JVM参数

 

 

java -XX:+PrintFlagsFinal -classpath=/path/to/your/libs MainClass  
java -XX:+PrintFlagsFinal -classpath=/path/to/your/libs MainClass

 

    3.如果你的Java应用已经是运行状态了,你想查看某个JVM参数生效没有可以使用jinfo这个工具。比如说大名鼎鼎的G1垃圾回收器,在JDK7update3中不论是客户端(-client)还是服务器(-server)模式下都不是默认启动的。

    jinfo是随JDK一起发布的,使用时先用jps找到Java应用的pid。直接运行jinfo可以查看使用说明。

 

jinfo -flag UseParallelOldGC 31072  
jinfo -flag UseParallelOldGC 31072
-XX:+UseParallelOldGC  
-XX:+UseParallelOldGC

 

    JDK中实用的工具还很多,可以逐个的体验一下${JAVA_HOME}/bin目录中的每个命令,有惊喜。



分享到:
评论

相关推荐

    JVM 参数汇总.pdf

    以下是一些关键的JVM参数及其作用: 1. **Xms** 和 **Xmx**: 这两个参数用于设置Java堆内存的大小。`Xms`设定初始堆大小,而`Xmx`设定最大堆大小。确保`Xms`小于或等于`Xmx`,以避免内存不足错误。通常,它们的值会...

    jvm启动参数大全

    以下是一些常见的JVM启动参数及其详细解释: 1. **-Xms和-Xmx**: 这两个参数用于设置Java堆内存的最小和最大值。例如,`-Xms256m -Xmx1024m`表示初始堆大小为256MB,最大堆大小为1GB。合理设置这两个参数可以避免因...

    JVM 50道面试题和答案.docx

    - `-XX:+PrintFlagsFinal`打印所有JVM参数的默认值。 - `jinfo`可以实时查看和调整JVM参数。 JVM调优是一个复杂的领域,涉及内存设置、垃圾收集器选择、线程管理等多个方面,需要根据具体应用的需求和性能瓶颈...

    JVM 面试题总结.md

    ### 常见的JVM调优参数有哪些? 在JVM调优中,常见的参数包括但不限于: - `-Xms`:设置初始堆内存大小。 - `-Xmx`:设置最大堆内存大小。 - `-XX:+UseConcMarkSweepGC`:指定使用CMS垃圾回收器。 - `-XX:+UseG1GC`...

    Java虚拟机(JVM)面试宝典1.pdf

    **1.1 JVM的主要组成部分及其作用** JVM的核心组件包括两个子系统和两个组件: - **Classloader(类装载器)**:负责根据给定的全限定名(如 `java.lang.Object`)来装载`.class`文件到运行时数据区...

    ant启动tomcat

    - 通过一系列`<echo message="..."/>`元素打印帮助信息,如可用的目标名称及其功能描述等。 ### 总结 通过上述分析,我们可以看到这份构建脚本主要实现了以下几个功能: - **启动**:通过调用Tomcat的bootstrap....

    整合了所有java经典面试题

    ### 整合了所有Java经典面试题 #### Java面向对象 1. **super()与this()的区别** - `super()`用于调用父类的构造方法。当你在一个子类的构造器中使用`super()`时,它会调用父类中具有相同参数列表的构造方法。...

    《JAVA程序设计》理论考题.doc

    对于题目中的代码,变量 `X` 的值为 `0`,因此会匹配 `case 0:` 并打印 `0`,接着执行 `case 2:` 子句并打印 `2`,之后由于遇到了 `break` 语句,流程跳出 `switch` 语句。因此,最终的输出为 `0` 和 `2`。 因此,...

    java模拟题

    1. **成员访问权限**:题目通过一个具体的类`A`及其中嵌套的类`B`和`C`来考察成员访问权限。在Java中,成员的访问控制分为四种:`public`、`protected`、`private`以及默认(包访问权限)。 - `public`:允许任何...

Global site tag (gtag.js) - Google Analytics