做网站找哪里,网站建设发布平台,ppt模板有哪些网站,网页设计入门学习教程目录
案例
发现问题
排查问题
步骤一
步骤二
步骤三 案例
import java.util.concurrent.TimeUnit;/*** 简单写一个CPU飙高的案例*/
public class CpuLoadUp {// 这里定义了一个标识private volatile static int flag 0;public static void main(String[] args) {// 执行…目录
案例
发现问题
排查问题
步骤一
步骤二
步骤三 案例
import java.util.concurrent.TimeUnit;/*** 简单写一个CPU飙高的案例*/
public class CpuLoadUp {// 这里定义了一个标识private volatile static int flag 0;public static void main(String[] args) {// 执行线程A的处理逻辑threadAProcess();// 执行线程B的处理逻辑threadBProcess();}public static void threadAProcess() {// 这里只是作为案例演示实际上这里使用的是线程池new Thread(() - {try {// 这里模拟业务逻辑需要处理很久TimeUnit.MINUTES.sleep(10);// 业务处理完之后更改标识flag为1flag 1;} catch (InterruptedException e) {// 业务逻辑处理失败}}, thread-A).start();}public static void threadBProcess() {// 这里只是案例演示实际上这里使用的是线程池new Thread(() - {// thread-A中的业务逻辑执行太久使得这里一直循环for (; ; ) {// 执行某业务逻辑// 直到flag为1时执行结束跳出循环if (flag 1) {break;}}}, thread-B).start();}
}发现问题
使用【top】命令查看到有一个java进程CPU飙到100%进程号为2567使用【jps】命令查看到正在运行的java程序
# top指令查看系统后台的进程状态
top # jps指令查看正在运行的Java进程
jps 排查问题
步骤一
使用【top -Hp 进程ID】查看进程中占用率最高的线程占用率达到99.9%的线程PID为2578
top -Hp 2567 步骤二
将线程的PID转换为十六进制结果是a12
public class MainTest {public static void main(String[] args) {// 查看2578的十六进制数结果为a12System.out.println(Integer.toHexString(2578));}
}
步骤三
使用【jstack】命令查看线程堆栈信息用十六进制线程ID搜索
# [-A 10]代表查看后10行信息
jstack 2567 | grep -A 10 a12