■ 安装
cat >>/etc/profile<<EOF
export JAVA_HOME=/usr/local/java/jdk1.8.0_171
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
EOF
source /etc/profile
ln -s /usr/local/java/jdk1.8.0_171/bin/java /usr/bin/java
java -version
■ java常用命令
- jps
#主要用来输出JVM进程状态信息
–m 输出传入main方法的参数
–l 输出main类或Jar的全限名
–v 输出传入JVM的参数
- jmap
jmap命令主要用于打印指定Java进程的共享对象内存映射或堆内存细节,jmap命令可以获得运行中的jvm的堆的快照,
从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象
所占内存的大小等等。
–heap pid 查看堆栈分布
–histo pid 按照使用使用大小逆序排列的
–dump dump堆栈
# 以hprof二进制格式将Java堆信息输出到文件内,该文件可以用MAT、VisualVM或jhat等工具查看
# 输出到文件,注意此时会暂停应用
jmap -dump:live,format=b,file=heapDump 23766
# 查看占用内存最多的最象,并按降序排序输出:
jmap -histo <pid>|grep alibaba|sort -k 3 -g -r|less
#查看对象数最多的对象,并按降序排序输出:
jmap -histo <pid>|grep alibaba|sort -k 2 -g -r|less
- jstack
jstack能得到运行java程序的java stack和native stack的信息。 jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多。
命令格式
jstack [option] pid
jstack [option] executable core
jstack [option] [server-id@]remote-hostname-or-ip
jstack 27676| grep Druid-ConnectionPool- | wc -l
jstack 27676| grep Xmemcached-Reactor-
jstack 27676| grep java.lang.Thread.State
jstack 27676| grep DubboServerHandler-
jstack 27676| grep DubboClientHandler-
- jstat
JVM统计监测工具,通过该工具可以实时了解当前进程的gc,compiler,class,memory等相关的情况,具体我们可以通过 jstat -options来看我们到底支持哪些类型的数据,常用的如下选项: -class:监视类装载、卸载数量、总空间及类装载所耗费的时间 -gc:监听Java堆状况,包括Eden区、两个Survivor区、老年代、永久代等的容量,以用空间、GC时间合计等信息 -gccapacity:监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大和最小空间 -gcutil:监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比 -gccause:与-gcutil功能一样,但是会额外输出导致上一次GC产生的原因 -gcnew:监视新生代GC状况 -gcnewcapacity:监视内同与-gcnew基本相同,输出主要关注使用到的最大和最小空间 -gcold:监视老年代GC情况 -gcoldcapacity:监视内同与-gcold基本相同,输出主要关注使用到的最大和最小空间 -gcpermcapacity:输出永久代使用到最大和最小空间 -compiler:输出JIT编译器编译过的方法、耗时等信息 -printcompilation:输出已经被JIT编译的方法
# 命令格式
jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]
- jinfo
用于查询当前运行这的JVM属性和参数的值。 -flag:显示未被显示指定的参数的系统默认值 -flag [+|-]name或-flag name=value: 修改部分参数 -sysprops:打印虚拟机进程的System.getProperties()
- jhat
用于分析使用jmap生成的dump文件,是JDK自带的工具,使用方法为: jhat -J -Xmx512m [file]