Java常用命令

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,导致之后真正执行频繁的代码没有足够的空间存放。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
原文地址:https://www.cnblogs.com/wade-luffy/p/6103945.html