JVM参数
3.1.1 标准参数
 -version
 -help
 -server
 -cp
 

3.1.2 -X参数
非标准参数,也就是在JDK各个版本中可能会变动
```
 -Xint     解释执行
 -Xcomp    第一次使用就编译成本地代码
 -Xmixed   混合模式,JVM自己来决定

3.1.3 -XX参数
> 使用得最多的参数类型
 >
 > 非标准化参数,相对不稳定,主要用于JVM调优和Debug
```
 a.Boolean类型
 格式:-XX:[+-]<name>            +或-表示启用或者禁用name属性
 比如:-XX:+UseConcMarkSweepGC   表示启用CMS类型的垃圾回收器
      -XX:+UseG1GC              表示启用G1类型的垃圾回收器
 b.非Boolean类型
 格式:-XX<name>=<value>表示name属性的值是value
 比如:-XX:MaxGCPauseMillis=500
 ```
3.1.4 其他参数
```
 -Xms1000M等价于-XX:InitialHeapSize=1000M
 -Xmx1000M等价于-XX:MaxHeapSize=1000M
 -Xss100等价于-XX:ThreadStackSize=100
 ```
> 所以这块也相当于是-XX类型的参数
3.1.5 查看参数
> java -XX:+PrintFlagsFinal -version > flags.txt

> 值得注意的是"="表示默认值,":="表示被用户或JVM修改后的值
 > 要想查看某个进程具体参数的值,可以使用jinfo,这块后面聊
 > 一般要设置参数,可以先查看一下当前参数是什么,然后进行修改
3.1.6 设置参数的常见方式
* 开发工具中设置比如IDEA,eclipse
 * 运行jar包的时候:java  -XX:+UseG1GC xxx.jar
 * web容器比如tomcat,可以在脚本中的进行设置
 * 通过jinfo实时调整某个java进程的参数(参数只有被标记为manageable的flags可以被实时修改)
3.1.7 实践和单位换算
 1Byte(字节)=8bit(位)
 1KB=1024Byte(字节)
 1MB=1024KB
 1GB=1024MB
 1TB=1024GB
 ```
```
 (1)设置堆内存大小和参数打印
 -Xmx100M -Xms100M -XX:+PrintFlagsFinal
 (2)查询+PrintFlagsFinal的值
 :=true
 (3)查询堆内存大小MaxHeapSize
 := 104857600
 (4)换算
 104857600(Byte)/1024=102400(KB)
 102400(KB)/1024=100(MB)
 (5)结论
 104857600是字节单位
 ```
3.1.8 常用参数含义
| 参数                                                                                |                                                 含义                                                 |                                                                    说明                                                                    |
 | :---------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: |
 | -XX:CICompilerCount=3                                                               |                                            最大并行编译数                                            |                               如果设置大于1,虽然编译速度会提高,但是同样影响系统稳定性,会增加JVM崩溃的可能                               |
 | -XX:InitialHeapSize=100M                                                            |                                             初始化堆大小                                             |                                                                简写-Xms100M                                                                |
 | -XX:MaxHeapSize=100M                                                                |                                              最大堆大小                                              |                                                                简写-Xms100M                                                                |
 | -XX:NewSize=20M                        



















