2016-02-29 25 views
2

运行以下命令列出所有可用的JVM标记:jcmd - 最后科拉姆的含义为`jcmd VM.flags -all`

jcmd 24468 VM.flags -all | less -N 

然后在最后一栏,发现下面的值(使用JDK1.8,在Linux上)

* product 
    default value is the same on all platform, 
* pd product 
    default value is platform-dependent, 
* manageable 
    could change dymanically in runtime, 
* 
* C1 product 
* C2 product 
* 
* C1 pd product 
* C2 pd product 
* 
* product rw 
* 
* lp64_product 
* ARCH product 
* 
* commercial 
* 

的问题是:

我只知道一些值的含义,这是我给出解释,剩下的是什么意思?

+0

我想'jcmd'话题是一个单独的标签过于狭窄。像'jdk-tools'这样的东西比较适合。 – apangin

回答

2

标志的类型取决于标志被声明/定义的HotSpot源代码中的位置。大部分标志在src/share/vm/runtime/globals.hpp中声明。

  • pd_product标志在globals.hpp也宣告,但在平台相关的文件中的一个定义:
  • C1 productC2 product标志特定于C1(客户端)和C2(服务器)公司mpiler分别。他们在文件中
  • C1 pd productC2 pd product宣称是特定于平台的目录(OS,CPU,OS_CPU)定义的那些C1/C2标志。
  • product rw标志与manageable类似,但是打算供内部使用,并且在将来版本的JVM中可能会更改。这些标志也可以在运行时通过JMX进行修改。
  • lp64_product标志仅存在于64位JVM中。在32位JVM中,它们是编译时常量。
  • ARCH product标志只存在于特定的体系结构上,不同于pd_product,它们在任何地方都存在,但默认值不同。特定于体系结构的标志在src/cpu/x86/vm/globals_x86.hpp中进行了声明和定义。
  • commercial标志要求-XX:+UnlockCommercialFeatures选项。

也有

  • diagnostic标志由JVM开发人员使用。
    他们被解锁-XX:+UnlockDiagnosticVMOptions
  • experimental未完全测试/支持的功能标志。
    他们解锁了-XX:+UnlockExperimentalVMOptions