1、下载JDK
下载网址:https://www.oracle.com/technetwork/java/javase/downloads/index.html
下拉,找到jdk8
使用Xshell远程连接虚拟机:
2、 先新建一个文件夹,目录是/usr/local/java
mkdir /usr/local/java
点击xftp:
将widows系统中的下载的jdk,传人到Linux系统中/usr/local/java目录下。
3、命令行进入/usr/local/java文件夹
cd /usr/local/java
解压:tar zxvf 压缩包名称 (例如: tar zxvf jdk-8.0251-linux-x64.tar.gz )后面的名称可以只输入一个 tar zxvf j ,然后使用 Tab 按键自动补全文件名
删除压缩包:rm -f 压缩包名称 (例如 rm -f jdk-8.0251-linux-x64.tar.gz )
4、环境变量配置
1. 编辑 /etc/profile 文件
vi /etc/profile
2. 按 Insert 或者 I 键,切换成编辑模式。
找到内容末尾,按图片输入下面一段话。
在 unset i 的前面输入
export JAVA_HOME=/usr/local/java/jdk1.8.0_251
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
(!!!注意:JAVA_HOME的路径是你实际解压后的JDK的路径,千万别写错了)
3. 按 Esc 退出编辑模式,输入 :wq 保存并退出
5、 生效环境变量
对于/etc/profile编写完成之后是不够的,还需要最后一个步骤,就是让刚刚我们修改的文件变成有效起来,所以我们再输入一个命令,让修改生效。
生效命令:
source /etc/profile
6、验证是否成
java -version
7、编写一个java程序:
在/root/haha目录下输入:vim TestFor.java
public class TestFor{
public static void main(String[] args){
int random =0;
while (random<100){
random=random *10;
}
}
}
注意:主类TestFor需要与类名相同
编译:javac TestFor.java
运行:java TestFor
由于程序中编写的是死循环,故非常消耗cpu,运行之后,top查看cpu使用率100%,
Linux系统cpu 100%排查:
-
查消耗cpu最高的进程PID
-
根据PID查出消耗cpu最高的线程号
-
根据线程号查出对应的java线程,进行处理。
可以看到:cpu使用率最高的进程PID为:102386
top -Hp 102386 显示一个进程的线程运行信息列表。按下P,进程按照cpu使用率排序
可以看到PID 为102387的线程耗用cpu最高。
这是十进制的数据,需要转化为十六进制:printf "%x\n" 102387
为:18ff3
之所以要转化为16进制,是因为堆栈里,线程id是用16进制表示的。
根据线程号查出对应的java线程,进行处理
执行命令,导出进程快照
查看堆栈,找到线程在干嘛
工具:pstack/jstack/grep
方法:jstack 102386 | grep ‘18ff3’ -C5 --color
· 打印进程堆栈
· 通过线程id,过滤得到线程堆栈
可以看到,问题出在TestFor.java文件中个第5行。
代码为死循环;
定位结束。