一、常规查询方法
当我们遇到JAVA内存泄漏或者CUP居高不下的时候,一般怎么排查问题呢?
首先我们看段代码,以下代码是当用户输入任意字符之后,开始启动三个线程,一个死循环,一个锁竞争,一个死锁。启动之后我们来看下CUP的一个变化。
1、CPU 100%代码片段
package com.netty;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 作者:XX
* 创建日期:2021/8/16
* 类说明:模拟CPU 占用 100%
*
*/
public class TestCpuThread {
public static void main(String[] args) throws IOException {
//控制台输入控制
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine();
//死循环线程
createBusyThread();
br.readLine();
Object o = new Object();
createLockThread(o);
//死锁
createDeadLock();
}
public static void createBusyThread() {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
while (true)
;
}
}, "busyThreadName");
t.start();
}
public static void createLockThread(final Object lock) {
Thread t = new Thread(new Runnable() {
@Override
public void run() {
synchronized(lock) {
try {
lock.wait();
}catch(InterruptedException e) {