JDK
官网/下载页面:https://www.oracle.com/technetwork/java/javase/downloads/index.html一、环境说明安装路径/usr/版本(虚拟机)jdk1.8.0_51版本(容器)jdk1.8.0_131二、安装步骤1、手动安装1.1解压tar -xfjdk-8u51-linux-x64...
官网/下载页面:https://www.oracle.com/technetwork/java/javase/downloads/index.html
一、环境说明
安装路径 | /usr/ |
版本(虚拟机) | jdk1.8.0_51 |
版本(容器) | jdk1.8.0_131 |
二、安装步骤
1、手动安装
1.1解压
tar -xf jdk-8u51-linux-x64.gz -C /usr
1.2 添加环境变量
#vim /etc/profile
export JAVA_HOME=/usr/jdk1.8.0_51
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# source /etc/profile
1.3 验证
# java -version
java version "1.8.0_51"
Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
2、Salt安装
执行命令salt 'ip' state.sls jdk.jdk_18_0_51
三、常用工具
jstack命令,用于查看 Java 进程内的线程堆栈信息。
jps命令,显示当前所有java进程pid的命令
jmap命令,用于生成堆转储快照,可以使用该命令查看进程堆内存的使用情况,包括JVM 使用的 GC 算法、堆配置参数和各代中堆内存的使用情况。此外,也可以使用 jmap 工具把进程内存导出到文件中,再结合其他工具进行分析查看。
jhat工具,和 jmap 搭配使用,使用 jhat 工具分析jmap 导出来的堆快照文件。
jconsole图形界化工具,可以用在本地开发环境排查性能问题。
jvisualvm图形界化工具:图形化显示线程信息、内存区块和 GC使用情况,可用在开发环境排查性能问题。
jstat:JVM 统计信息监测工具,可以使用该工具查看分析各区内存使用和 GC 情况。
四、常用命令
1、jps:显示当前所有java进程pid的命令
常用指令
jps
:显示当前用户的所有java进程的PID
jps -v 3331
:显示虚拟机参数
jps -m 3331
:显示传递给main()函数的参数
jps -l 3331
:显示主类的全路径
2、jstat:显示进程中的类装载、内存、垃圾收集、JIT编译等运行数据
常用指令
jstat -gc 3331 250 20
:查询进程2764的垃圾收集情况,每250毫秒查询一次,一共查询20次。
jstat -gccause
:额外输出上次GC原因
jstat -calss
:查询类装载、类卸载、总空间以及所消耗的时间
3、jmap:生成堆转储快照(heapdump)
常用指令
jmap -heap 3331
:查看java 堆(heap)使用情况
jmap -histo 3331
:查看堆内存(histogram)中的对象数量及大小
jmap -histo:live 3331
:JVM会先触发gc,然后再统计信息
jmap -dump:format=b,file=heapDump 3331
:将内存使用的详细情况输出到文件,之后一般使用其他工具进行分析。
4、jhat:一般与jmap搭配使用,用来分析jmap生成的堆转储文件
由于有很多可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)可以替代,所以很少用。不过在没有可视化工具的机器上也是可用的。
常用指令
jmap -dump:format=b,file=heapDump 3331
jhat heapDump
:解析Java堆转储文件,并启动一个 web server
5、jstack:生成当前时刻的线程快照
常用指令
jstack 3331
:查看线程情况
jstack -F 3331
:正常输出不被响应时,使用该指令
jstack -l 3331
:除堆栈外,显示关于锁的附件信息
五、常见问题定位过程
1、频繁GC问题或内存溢出问题
一、使用jps
查看线程ID
二、使用jstat -gc 3331 250 20
查看gc情况,一般比较关注PERM区的情况,查看GC的增长情况。
三、使用jstat -gccause
:额外输出上次GC原因
四、使用jmap -dump:format=b,file=heapDump 3331
生成堆转储文件
五、使用jhat或者可视化工具(Eclipse Memory Analyzer 、IBM HeapAnalyzer)分析堆情况。
六、结合代码解决内存溢出或泄露问题。
2、死锁问题
一、使用jps
查看线程ID
二、使用jstack 3331
:查看线程情况
更多推荐
所有评论(0)