指在JVM中比较稳定的参数(在各个jdk版本中不会变动) 如 -version -help -server -cp
非标准参数,指在JDK各版本中可能会变动的参数,如:
-Xint 解释执行
-Xcomp 第一次使用就编译成本地代码
用于调用和debug的参数,也是日常用的最多的参数
等于是-XX参数的缩写版
-XX:CICompilerCount=3 最大并行编译数 并行数太大的话会影响稳定性
-XX:InitialHeapSize=100M 初始化堆大小 简写-Xms100M
-XX:MaxHeapSize=100M 最大堆大小 简写-Xmx100M
-XX:NewSize=20M 设置年轻代的大小
-XX:MaxNewSize=50M 年轻代最大大小
-XX:OldSize=50M 设置老年代大小
-XX:MetaspaceSize=50M 设置方法区大小
-XX:MaxMetaspaceSize=50M 方法区最大大小
-XX:+UseParallelGC 使用UseParallelGC 新生代,吞吐量优先
-XX:+UseParallelOldGC 使用UseParallelOldGC 老年代,吞吐量优先
-XX:+UseConcMarkSweepGC 使用CMS 老年代,停顿时间优先
-XX:+UseG1GC 使用G1GC 新生代,老年代,停顿时间优先
-XX:NewRatio 新老生代的比值 比如-XX:Ratio=4,则表示新生代:老年代=1:4,也就是新生代占整个堆内存的1/5
-XX:SurvivorRatio 两个S区和Eden区的比值 比如-XX:SurvivorRatio=8,也就是(S0+S1):Eden=2:8, 也就是一个S占整个新生代的1/10
-XX:+HeapDumpOnOutOfMemoryError 启动堆内存溢出打印 当JVM堆内存发生溢出时,也就是OOM,自动生成dump文件
-XX:HeapDumpPath=heap.hprof 指定堆内存溢出打印目录 表示在当前目录生成一个heap.hprof文件
-Xss128k 设置每个线程的堆栈大小
-XX:InitiatingHeapOccupancyPercent 启动并发GC周期时堆内存使用占比 G1之类的垃圾收集器用它来触发并发GC周期,基于整个堆
的使用率,而不只是某一代内存的使用比. 值为 0 则表示"一直执行GC循环". 默认值为45
-XX:G1HeapWastePercent 允许的浪费堆空间的占比 默认是10%,如果并发标记可回收的空间小于10%,则不会触发MixedGC
-XX:MaxGCPauseMillis=200ms G1最大停顿时间
-XX:ConcGCThreads=n 并发垃圾收集器使用的线程数量 默认值随JVM运行的平台不同而不同
显示当前所有java进程pid的命令,格式:jps [参数] [主机,可以是ip或域名,协议,端口等]
常用参数:
-q 只显示PID
-v 显示虚拟机参数
-m 显示传递给main()函数的参数
-l 显示主类的全路径
显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据
jstat [操作] [vmid] [查询间隔,单位毫秒] [查询次数]
如 jstat -gc 2222 300 20 表示查询查询进程号2222的垃圾收集情况,每300毫秒一次,一共查20次
常用参数:
-class 监视类加载、卸载数量、总空间以及类装载所耗费的时间
-gc 监视Java堆状况,包括Eden区、2个 Survivor区、老年代、永久代等的容量,已用空间,垃圾收集时间合计等信息
-gccapacity 监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause 与-gcutil 功能一样,但是会额外输出导致上一次垃圾收集产生的原因
-gcnew 监视新生代垃圾收集状况
-gcnewcapacity 监视内容与-gcnew基本相同,输出主要关注使用到的最大、最小空间
-gcold 监视老年代垃圾收集状况
-gcoldcapacity 监视内容与-gcold基本相同,输出主要关注使用到的最大、最小空问
-gcpermcapacity 输出永久代使用到的最大,最小空间
-compiler 输出即时编译器编译过的方法、耗时等信息
-printcompilation 输出已经被即时编译的方法
实时查看和调整虚拟机各项参数
jinfo [参数] [PID] 常用参数 -flag
查看MaxHeapSize的参数
jinfo -flag MaxHeapSize 2333 显示结果-XX:MaxHeapSize = 12312321
修改MaxHeapSize参数
jinfo -flag -XX:MaxHeapSize=2222222
用于生成堆转储快照(一般称为heapdump或dump文件)
jamp [参数] [vmid]
常用参数:
-dump 生成Java堆转储快照。格式为-dump:[live,]format=b,file=
-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris平台下有效
-heap 显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris平台下有效
-histo 显示堆中对象统计信息,包括类、实例数量、合计容量
-permstat 以ClassLoader为统计口径显示永久代内存状态。只在Linux/Solaris平台下有效
-F 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在 Linux/Solaris平台下有效
dump文件作用是用来分析java程序的内存情况,比如OutofMemoryError异常就可以导出dump文件分析
jmap -dump:file=文件路径/文件名 进程号
与jmap搭配使用,来分析jmap生成的堆转储快照
执行jhat 导出的dump文件,出现Server is ready在浏览器输入http://localhost:7000/可进入分析页面
用于生成虚拟机当前时刻的线程快照
jstack [参数] [vmid]
常用参数:
-F 当正常输出的请求不被响应时,强制输出线程堆栈
-1 除堆栈外,显示关于锁的附加信息
-m 如果调用到本地方法的话,可以显示C/C++的堆栈
jvisualvm
阿里巴巴开源的java诊断工具
github地址:https://github.com/alibaba/arthas