安装环境及版本:
- jdk: 11
一 启动参数
启动参数
# idea启动-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC# java jar启动java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC newframe-1.0.0.jar# 参数说明(放在xx.jar前面才生效)-Xms1g (堆最大大小)-Xmx1g (堆初始大小)-Xmn512M (新生代大小)-Xss512K (棧最大深度大小)-XX:SurvivorRatio=8 (新生代分区比例 8:2)-XX:MetaspaceSize=256M (元空间初始大小)-XX:MaxMetaspaceSize=256M (元空间最大大小)-XX:+UseConcMarkSweepGC (指定使用的垃圾收集器,这里使用CMS收集器)-XX:+PrintGCDetails (打印详细的GC日志)
jar附加参数
java -jar xxx.jar# 指定依赖包所在的仓库位置,如果仓库中没有需要的依赖,启动jar包时还会自动连接远程仓库进行下载-Dthin.root=/root/repository#预加载程序,执行“试运行”,它只解析和下载依赖项,而不运行任何用户代码:-Dthin.dryrun=true
二 监控命令
- top ```shell top
交互参数(大写字母配合shift按键)
h:帮助f:各字段全名1:显示多个cpu(数字1)d:切换刷新时间(秒)b:打印模式e/E:切换内存显示单位(KB/MB/GB)x/y:高亮一列/行(配合b/B)z:改变显示颜色(配合Z:改变颜色方案)c:切换显示命令名称和完整命令行。t:显示和隐藏任务/cpu信息;m:显示和隐藏内存信息l:显示负载信息M:根据驻留内存大小进行排序。P:根据CPU使用百分比大小进行排序。T:根据时间/累计时间进行排序。V:树视图H:显示线程
2.
jps
```shell
#显示当前所有java进程pid的命令,我们可以通过这个命令来查看到底启动了几个java进程
jps //显示当前所有java进程pid的命令
jps -l //jps -l 输出应用程序main.class的完整package名或者应用程序jar文件完整路径名
jps -v //输出传递给JVM的参数
- jinfo
#启动信息等 jinfo pid
- 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
堆外内存(直接内存)监控(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
- jconsole
启动java/bin路径下jconsole.exe
- jprofiler
