linux 指定jvm djava.library.path_jvm调优~Sun的礼物

245899f7b323f1ea0a449bb2827df11c.png

jps

这个命令可以查看机器上正在运行的java程序, 比如你在安装好zookeeper时你应该用过这个命令检查zookeeper是否有运行成功!

jps可以组合的参数有jps -p 只显示LVMID,省略主类信息(LVMID:本地虚拟机进程唯一编号)
jps -l 显示虚拟机启动进程时传递给main()的参数 jps -m 显示类全面,如果是jar包显示jar路径jps -v 显示虚拟机启动时候的JVM参数 当然这些参数也可以组合使用如:jps -mlv; 这里返回信息中第一列表示进程号, 这个进程号非常有用 在下面的工具中都会用到的;

jinfo

可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数

参数:

-flag <name> pid:打印指定JVM的参数值

-flag [+|-]<name> pid:设置指定JVM参数的布尔值>+号表示给指定的进程添加某个参数,如果你想卸载一个多余的参数就用-号

-flag <name>=<value> pid:设置指定JVM参数的值

jstat

显示本地或者远程虚拟机进程中的类装载、 内存、 垃圾收集、 JIT编译等运行数据。是定位虚拟机性能问题的首选工具 这个工具很厉害 学会了能拿30k base

用法: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数]

命令选项是你想要看到和针对哪一个维度的信息, 有很多 不过有点规律; vmid就是jps查看到的那个进程id 时间间隔和查询次数是多长时间收集一次信息 一共收集几次 先来讲讲命令选项

-class类加载、卸载数量、总空间及类装载所耗费的时间

-compiler显示JIT编译器编译过的方法、耗时等信息

-gc统计Java堆,包括Eden、Survivor、老年代、永久代的容量,已用空间、 GC时间等信息

-gccapacity显示Java堆各个区域使用到的最大、最小空间

-gcutil显示已使用空间占总空间的百分比

-gccause垃圾收集统计概述(同-gcutil),附加最近两次垃圾回收事件的原因

-gcnew新生代行为统计

-gcnewcapacity新生代使用到的最大、最小空间统计

-gcold统计老年代GC状况

-gcoldcapacity年老代行为统计(同-gcoldcapacity),主要关注使用到的最大、最小空间

-gcpermcapacity显示永久代使用到的最大、最小空间(-gcmetacapacity)

-printcompilation显示已经被JIT编译的方法
举几个例子:

jstat -gc 2344 1000 10 表示我要查看进程号为2344的这个项目gc内容,每一秒打印出一条信息,一共打印10次;

相信你一定会根据列子敲一遍 但是仍然一脸蒙蔽 因为返回的信息具体的列代表什么意思呢?

S0C(Survivor0的总大小)S1C(Survivor1的总大小)S0U(Survivor0 used情况)S1U(Survivor1 used情况) EC(Eden 的总大小) EU(Eden used情况) OC(Old 总大小) OU(Old used情况) MC(Metaspace 总大小) MU(Metaspace used 情况) CCSC(压缩类大小) CCSU(压缩类空间使用) YGC(young gc times) YGCT(young 使用的时间,这里忘了是每次ygc的时间还是所有ygc时间总和了) FGC(full gc times) FGCT(full gc 时间) CGC CGCT GCT(FGCT+YGCT的时间)

可能不同版本的jdk返回的不一样我这里用的是jdk11 赶个时髦;所以导致我还不知道CGC表示的是什么东东 但是jdk1.8是不是有这个东西的 可能jdk11默认的gc收集器是G1用到的机制有些不一样导致的; 等以后研究一下G1后就应该知道了


jstat -gccause 6799 1000 10这个gccause的参数会经常用的 使用它能知道各个内存区域使用百分比情况 而且能知道full gc的原因,返回的参数

S0(Survivor0 使用情况) S1(Survivor1使用情况) E(Eden 使用比例) O(0ld 使用比例) M(Metaspace 使用比例) CCS(压缩使用比例) YGC(young gc 次数) YGCT(young gc 时间) FGC(full gc 次数) FGCT(full gc 时间) CGC CGCT GCT(YGCT+FGCT的时间) LGCC(发生GC的原因) GCC

jmap

用于生成heap dump文件,如果不使用这个命令,还可以使用-XX:+HeapDumpOnOutOfMemoryError 参数来让虚拟机出现OOM的时候自动生成dump文件。 jmap不仅能生成dump文件,还可以查询finalize执行队 列、Java堆和永久代的详细信息,如当前使用率、当前使用的是哪种收集器等

用法: jmap [-命令选项] [vmid]

-dump 生成Java堆快照。格式:-dump:[live, ]format=b, file=<filename>,live为是否 只生成存活的对象

-histo 显示堆中对象的统计信息,包括类、有多少个实例,合计容量等

-permstat 显示永久代内存状态。只在Linux/Solaris平台下有效

-heap 显示堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在Linux/Solaris 平台下有效

-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象。只在Linux/Solaris 平台下有效

-F 当虚拟机进程多-dump没有响应时,可以使用这个选项强制生成dump快照。只在 Linux/Solaris平台下有效

jstack

用于生成虚拟机当前时刻的线程快照,以便可以进一步定位线程出现长时间停顿的原因,如线程间死锁、 死循环、 请求外部资源导致的长时间等待等。

用法: jstack [-命令选项] [vmid]

-F 当输出请求不被响应时,强制输出线程堆栈信息

-l 除堆栈信息外,附加显示关于锁的信息

-m 如果涉及本地方法调用,则显示C/C++的堆栈
jstack这个参数会返回一堆的信息 如果你是试着写一个死循环或者死锁的验证的话你会发现明显的提示代码;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值