JDK

官网/下载页面: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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值