jps    查看java进程的PID

java -XX:+PrintFlagsInitial    显示所有可设置参数及默认值

java -XX:+PrintFlagsFinal    获取到所有可设置参数及值(手动设置之后的值)

java -XX:+PrintCommandLineFlags    显示出JVM初始化完毕后所有跟最初的默认值不同的参数及它们的值

jmap -histo [pid]    查看java堆上的对象分布情况

java用法: java [-options] class [args...](执行类)或 java [-options] -jar jarfile [args...](执行 jar 文件)

譬如:java -cp . -Xmx3G -Xmn2G -server -XX:-TieredCompilation AppMain

[-options]

    -d32 使用 32 位数据模型 (如果可用)

    -d64 使用 64 位数据模型 (如果可用)

    -server 选择 "server" VM,默认 VM 是 server

    -cp <目录和 zip/jar 文件的类搜索路径>

    -classpath <目录和 zip/jar 文件的类搜索路径>,用 : 分隔的目录, JAR和 ZIP列表, 用于搜索类文件。

    -D<名称>=<值> 设置系统属性

    -verbose:[class|gc|jni] 启用详细输出

    -version 输出产品版本并退出

    -showversion 输出产品版本并继续

    -Xdiag 显示附加诊断消息

    -Xnoclassgc 禁用类垃圾收集

    -Xincgc 启用增量垃圾收集

    -Xloggc:<file> 将 GC 状态记录在文件中 (带时间戳)

    -Xbatch 禁用后台编译

    -Xms<size> 设置初始 Java 堆大小

    -Xmx<size> 设置最大 Java 堆大小

    -Xss<size> 设置 Java 线程堆栈大小

    -Xprof 输出 cpu 配置文件数据

    -XshowSettings 显示所有设置并继续

    -XshowSettings:all 显示所有设置并继续

    -XshowSettings:vm 显示所有与 vm 相关的设置并继续

    -XshowSettings:properties 显示所有属性设置并继续

    -XshowSettings:locale 显示所有与区域设置相关的设置并继续

    -XX:-UseBiasedLocking    关闭偏向锁默认会进入轻量级锁状态

    -XX:-DoEscapeAnalysis 关闭逃逸分析

    -XX:-TieredCompilation 关闭分层编译

    -XX:-BackgroundCompilation 关闭异步编译

    -XX:CompileThreshold 方法调用次数或循环次数达到这个阈值就会触发标准编译(client:1500,server:10000)

ps:

触发OSR编译的阈值计算(OSR编译就是只编译该循环代码不编译类的其他方法)
-XX:CompileThreshold = 10000
-XX:OnStackReplacePercentage = 140
-XX:InterpreterProfilePercentage = 33
OSR trigger = (CompileThreshold * (OnStackReplacePercentage - InterpreterProfilePercentage)) / 100 = 10700
JIT编译在默认情况是异步进行的,当触发某方法或某代码块的优化时,先将其放入编译队列,然后由编译线程进行编译,编译之后的代码放在CodeCache中,CodeCache的大小也是有限的,CompileThreshold设置的太低,JIT会将一大堆执行不那么频繁的代码进行编译,并放入CodeCache,导致之后真正执行频繁的代码没有足够的空间存放。