参数
- 内存相关
- -Xmn : 新生代/年轻代(new)的值
- -Xms:堆内存初始值(start)
- -Xmx:堆内存最大值(max)
- -Xss:线程栈(stack)的内存大小
- -XX:MaxDirectMemorySize:堆外内存最大值
- 最大堆外内存大小,此参数的含义是当Direct ByteBuffer分配的堆外内存到达指定大小后就触发Full GC
 
- -XX:MaxPermSize:方法区/非堆(永久代)最大值
 
- 编译相关
- -XX:CompileThreshold:JIT方法计数器阈值(计数器阈值一旦溢出,就会触发即时编译)
- -Xmixed:默认编译模式,混合模式,即开始解释,对热点代码实行检测与编译(启动速度较快)
- -Xint:解释模式(启动很快,执行稍慢)
- -Xcomp:编译模式(启动很慢,执行很快)
 
工具
- jstat:虚拟机统计信息监视工具(主要用于监控GC数据信息) - jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类加载、内存、垃圾收集、即时编译等运行时数据,在没有GUI图形界面、只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟机性能问题的常用工具。 
- jstat命令格式为 - ```bash jstat [ option vmid [interval[s|ms] [count]] ]
1 
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 * 参数interval和count代表查询间隔和次数,如果省略这2个参数,说明只查询一次。
 * 选项option代表用户希望查询的虚拟机信息,主要分为三类:**类加载、垃圾收集、运行期编译状况**。
 * jinfo:Java配置信息工具
 * 实时**查看**和**调整**虚拟机各项参数
 * 使用 **jps命令的-v参数可以查看虚拟机启动时显式指定的参数列表**
 * 命令格式
 * ```bash
 jinfo [ option ] pid
 
- ```bash jstat [ option vmid [interval[s|ms] [count]] ]
 
- jmap:Java内存映像工具 - 命令用于生成堆转储快照(一般称为heapdump或dump文件) 
- 还可以查询finalize执行队列、Java堆和方法区的详细信息,如空间使用率、当前用的是哪种收集器等。 
- jmap [ option ] vmid
 
- jhat:虚拟机堆转储快照分析工具 - jhat(JVM Heap Analysis Tool)命令与jmap搭配使用,来分析jmap生成的堆转储快照。
 
- jstack:Java堆栈跟踪工具 - 用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)
- 生成线程快照的目的通常是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间挂起等,都是导致线程长时间停顿的常见原因。线程出现停顿时通过jstack来查看各个线程的调用堆栈,就可以获知没有响应的线程到底在后台做些什么事情,或者等待着什么资源。
 
参考
- 《深入理解Java虚拟机》