参数
- 内存相关
- -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虚拟机》