安装环境及版本:

  • jdk: 11

一 启动参数

启动参数

  1. # idea启动
  2. -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC
  3. # java jar启动
  4. java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC newframe-1.0.0.jar
  5. # 参数说明(放在xx.jar前面才生效)
  6. -Xms1g (堆最大大小)
  7. -Xmx1g (堆初始大小)
  8. -Xmn512M (新生代大小)
  9. -Xss512K (棧最大深度大小)
  10. -XX:SurvivorRatio=8 (新生代分区比例 8:2
  11. -XX:MetaspaceSize=256M (元空间初始大小)
  12. -XX:MaxMetaspaceSize=256M (元空间最大大小)
  13. -XX:+UseConcMarkSweepGC (指定使用的垃圾收集器,这里使用CMS收集器)
  14. -XX:+PrintGCDetails (打印详细的GC日志)

jar附加参数

  1. java -jar xxx.jar
  2. # 指定依赖包所在的仓库位置,如果仓库中没有需要的依赖,启动jar包时还会自动连接远程仓库进行下载
  3. -Dthin.root=/root/repository
  4. #预加载程序,执行“试运行”,它只解析和下载依赖项,而不运行任何用户代码:
  5. -Dthin.dryrun=true

二 监控命令

  1. top ```shell top

交互参数(大写字母配合shift按键)

  1. h:帮助
  2. f:各字段全名
  3. 1:显示多个cpu(数字1)
  4. d:切换刷新时间(秒)
  5. b:打印模式
  6. e/E:切换内存显示单位(KB/MB/GB)
  7. x/y:高亮一列/行(配合b/B)
  8. z:改变显示颜色(配合Z:改变颜色方案)
  9. c:切换显示命令名称和完整命令行。
  10. t:显示和隐藏任务/cpu信息;
  11. m:显示和隐藏内存信息
  12. l:显示负载信息
  13. M:根据驻留内存大小进行排序。
  14. P:根据CPU使用百分比大小进行排序。
  15. T:根据时间/累计时间进行排序。
  16. V:树视图
  17. H:显示线程


2. 
jps
```shell
#显示当前所有java进程pid的命令,我们可以通过这个命令来查看到底启动了几个java进程
jps    //显示当前所有java进程pid的命令
jps -l //jps -l 输出应用程序main.class的完整package名或者应用程序jar文件完整路径名
jps -v //输出传递给JVM的参数
  1. jinfo
    #启动信息等
    jinfo pid
    
  1. jstat ```shell

    对java应用程序的资源和性能进行实时的命令行监控,包括了对heap size和垃圾回收状况的监控

    jstat -gc 10010 1000 3 //对进程10010的每个1分钟打印一次,共3次 jstat -gcutil 10010 1000 3 //对进程10010的每个1分钟打印一次,循环

格式

jstat -

打印结果

S0C:年轻代第一个survivor的容量(字节) S1C:年轻代第二个survivor的容量(字节) S0U:年轻代第一个survivor已使用的容量(字节) S1U:年轻代第二个survivor已使用的容量(字节) EC:年轻代中Eden的空间(字节) EU:年代代中Eden已使用的空间(字节) OC:老年代的容量(字节) OU:老年代中已使用的空间(字节) PC:永久代的容量 PU:永久代已使用的容量 YGC:从应用程序启动到采样时年轻代中GC的次数 YGCT:从应用程序启动到采样时年轻代中GC所使用的时间(单位:S) FGC:从应用程序启动到采样时老年代中GC(FULL GC)的次数 FGCT:从应用程序启动到采样时老年代中GC所使用的时间(单位:S)



5. 
jmap
```shell
#jvm 堆分配
jhsdb jmap --heap --pid 56309
  1. jcmd ```shell

    jar启动需要追加参数

    -XX:NativeMemoryTracking=summary 或者 -XX:NativeMemoryTracking=detail

堆外内存(直接内存)监控(https://blog.csdn.net/qianshangding0708/article/details/100978730)

jcmd 101359 VM.native_memory




<a name="143cbb94"></a>
## 三 可视化工具

1. 
Jvisualvm
<br />**linux使用以下命令启动,windows JMX 端口连接**
```shell
/**
* 这是一整条命令
* hostname:linux的ip
* port windows连接用的端口
**/
java -Djava.rmi.server.hostname=192.168.32.129 
-Djava.security.policy=jstatd.all.policy 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=8888 
-Xms1g -Xmx1g -jar pure-1.0-SNAPSHOT.jar
  1. jconsole
    启动java/bin路径下jconsole.exe
    
  1. jprofiler