doc: 阅读jvm工具命令
This commit is contained in:
@@ -55,6 +55,11 @@
|
|||||||
- [G1垃圾收集器](#g1垃圾收集器)
|
- [G1垃圾收集器](#g1垃圾收集器)
|
||||||
- [G1垃圾收集器内存布局](#g1垃圾收集器内存布局)
|
- [G1垃圾收集器内存布局](#g1垃圾收集器内存布局)
|
||||||
- [Remembered Set](#remembered-set)
|
- [Remembered Set](#remembered-set)
|
||||||
|
- [虚拟机内存监控和故障处理工具](#虚拟机内存监控和故障处理工具)
|
||||||
|
- [jps](#jps)
|
||||||
|
- [jstat](#jstat)
|
||||||
|
- [jinfo](#jinfo)
|
||||||
|
- [jstack](#jstack)
|
||||||
|
|
||||||
|
|
||||||
# 深入理解java虚拟机
|
# 深入理解java虚拟机
|
||||||
@@ -483,4 +488,57 @@ G1收集器中Region之间的对象引用以及其他收集器中新生代和老
|
|||||||
|
|
||||||
<img src="https://ask.qcloudimg.com/http-save/5427637/ouqa71pbc7.jpeg" style="width: 100%;">
|
<img src="https://ask.qcloudimg.com/http-save/5427637/ouqa71pbc7.jpeg" style="width: 100%;">
|
||||||
|
|
||||||
|
## 虚拟机内存监控和故障处理工具
|
||||||
|
### jps
|
||||||
|
该命令会列举出正在运行的java虚拟机进程,并现实如下内容:
|
||||||
|
- 进程ID
|
||||||
|
- 虚拟机执行MainClass名称
|
||||||
|
|
||||||
|
### jstat
|
||||||
|
jstat命令用于监视虚拟机各种运行状态信息。其可以显示本地、远程虚拟机进程中类装载、内存、垃圾收集、JIT编译等运行数据。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
jstat [ option vmid [interval[s|ms] [count]]]
|
||||||
|
```
|
||||||
|
在上述格式中,interval代表的是间隔,count代表的是次数,如果上述两个参数省略,代表只查询一次。假设需要每250ms查询一次进程2764的垃圾收集情况,一共查询20次,那么具体命令如下:
|
||||||
|
```bash
|
||||||
|
jstat -gc 2764 250 20
|
||||||
|
```
|
||||||
|
|
||||||
|
其中,option代表用户希望查询的虚拟机信息,主要分为3类:
|
||||||
|
- 类装载
|
||||||
|
- 垃圾收集
|
||||||
|
- 运行期编译情况
|
||||||
|
|
||||||
|
| 选项 | 作用 |
|
||||||
|
| :-: | :-: |
|
||||||
|
| -class | 监视类装载、装载数量、总空间、类装载耗费时间 |
|
||||||
|
| -gc | 监视java堆内存情况,包括eden区、s0/s1区、老年代、永久代等容量、已用空间、gc时间合计等信息 |
|
||||||
|
| -gccapacity | 内容和-gc基本相同,输出主要关注java堆各个区域使用到的最大、最小空间 |
|
||||||
|
| -gcutil | 内容和-gc基本相同,输出主要关注已使用空间占总空间的百分比 |
|
||||||
|
|
||||||
|
### jinfo
|
||||||
|
jinfo用于实时查看和调整虚拟机各项参数,使用jps -v命令可以查看jvm启动时显式指定的参数列表。
|
||||||
|
|
||||||
|
但是想要了解未显式指定参数的默认值,可以通过
|
||||||
|
```bash
|
||||||
|
jinfo -flag
|
||||||
|
```
|
||||||
|
示例如下
|
||||||
|
```bash
|
||||||
|
jinfo -flag MaxHeapSize 5338
|
||||||
|
```
|
||||||
|
|
||||||
|
除此之外,还可以通过
|
||||||
|
```bash
|
||||||
|
jinfo -flags 5338
|
||||||
|
```
|
||||||
|
上述命令会输出所有参数。
|
||||||
|
|
||||||
|
info命令还支持打印出进程的`System.getProperties()`内容
|
||||||
|
```bash
|
||||||
|
jinfo -sysprops 5338
|
||||||
|
```
|
||||||
|
|
||||||
|
### jstack
|
||||||
|
jstack命令用于生成虚拟机当前时刻的线程快照,即当前虚拟机每一个线程正在执行的方法堆栈集合。该命令主要用于定位线程长时间出现停顿的原因,例如线程间死锁、死循环、长时间等待等。
|
||||||
|
|||||||
Reference in New Issue
Block a user