成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java中的CPU占用高和內存占用高的問題排查

開發(fā) 后端
下面通過模擬實例分析排查Java應用程序CPU和內存占用過高的過程。如果是Java面試,這2個問題在面試過程中出現(xiàn)的概率很高,所以我打算在這里好好總結一下。

 下面通過模擬實例分析排查Java應用程序CPU和內存占用過高的過程。如果是Java面試,這2個問題在面試過程中出現(xiàn)的概率很高,所以我打算在這里好好總結一下。

1、Java CPU過高的問題排查

舉個例子,如下: 

  1. package com.classloading;  
  2. public class Test {  
  3.     static class MyThread extends Thread {  
  4.         public void run() { // 死循環(huán),消耗CPU  
  5.             int i = 0 
  6.             while (true) {  
  7.                 i++;  
  8.             }  
  9.         }  
  10.     }  
  11.     public static void main(String args[]) throws InterruptedException {  
  12.         new MyThread().start();  
  13.         Thread.sleep(10000000);  
  14.     }  

使用top命令查看占用CPU過高的進程。如下圖所示。

查看進程6102下線程的占用情況,如下圖所示。

使用如下命令將6122轉換為16進制表示,如下:

導出CPU占用高進程的線程棧。命令如下: 

  1. jstack pid >> java.txt 

內容如下: 

  1. mazhi@mazhi:~$ cat java.txt   
  2. Attaching to remote server pid, please wait...  
  3. 2021-02-23 15:38:18  
  4. Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.192-b12 mixed mode):  
  5. "Attach Listener" #10 daemon prio=9 os_prio=0 tid=0x00007f4ee0001000 nid=0x1956 runnable [0x0000000000000000]  
  6.    java.lang.Thread.State: RUNNABLE  
  7. // 這是0x17ea線程,也是占用CPU最高的線程  
  8. "Thread-0" #9 prio=5 os_prio=0 tid=0x00007f4f180d6000 nid=0x17ea runnable [0x00007f4f044da000]  
  9.    java.lang.Thread.State: RUNNABLE  
  10.     at com.cpuhigh.Test$MyThread.run(Test.java:8)  // 這里指示第8行,則正是死循環(huán)的代碼開始  
  11. ... 

導出的堆棧信息有線程的狀態(tài)(一般要找RUNNABLE狀態(tài))和調用堆棧結合來查找問題。線程dump分析:線程dump分析主要目的是定位線程長時間停頓的原因

2、Java 內存過高的問題排查

舉個例子如下: 

  1. package com.classloading;  
  2. import java.util.ArrayList;  
  3. import java.util.List;  
  4. public class Test {  
  5.     private static final int UNIT_MB = 1024 * 1024;  
  6.      public static void main(String args[]) throws InterruptedException{  
  7.         List<Object> x = new ArrayList<Object>();  
  8.         int i = 0 
  9.         while(i<1000){  
  10.             x.add(new byte[UNIT_MB]);  
  11.             i++;  
  12.         }  
  13.         Thread.sleep(1000000000);  
  14.     }  

通過jmap dump內存快照。 如果是線上環(huán)境,注意dump之前必須先將流量切走,否則大內存dump是直接卡死服務。

命令行輸入: 

  1. jmap -histo <pid> | head -20 

就可以查看某個pid的java服務占用內存排名前20的類,如下圖所示。

可以看到,占用內存最多的是byte字節(jié)數(shù)組,共有1008個實例。

jmap 還有一個指令可以把整個內存情況轉成文件形式保存下來,如下: 

  1. jmap -dump:format=b,file=filename.bin <pid> 

執(zhí)行命令如下圖所示。

可以在JVM啟動時設置,如果發(fā)生OOM,則dump出文件。命令如下: 

  1. -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof 

如果快照文件不大,可以下載到本地,然后通過 MAT 分析,也可以在線分析( https://fastthread.io/ );如果快照文件很大,可以在服務器上直接分析,使用的命令是: 

  1. jhat dump.hprof 

jhat也是jdk內置的工具之一。主要是用來分析java堆的命令,可以將堆中的對象以html的形式顯示出來,包括對象的數(shù)量,大小等等,并支持 對象查詢語言 。命令執(zhí)行后如下圖所示。

訪問如下圖所示。

 

其中的Show heap histogram就會顯示對象占用內在的大小。如下圖所示。

 

 

責任編輯:龐桂玉 來源: JAVA高級架構
相關推薦

2019-09-24 09:00:22

RedisCPU內存

2019-12-16 09:10:38

Linux中央處理器進程

2019-12-16 11:00:04

LinuxCPU進程

2024-06-12 11:26:04

2020-11-02 09:25:33

CPUJava線程

2019-07-24 11:52:11

CPU服務器面試官

2023-12-26 11:39:50

CPU系統(tǒng)進程

2020-03-26 19:27:09

微軟Windows 10操作系統(tǒng)

2019-07-16 06:43:18

LinuxCPU占用率

2010-02-24 08:09:09

Windows 7內存占用

2021-05-10 06:38:11

Windows10操作系統(tǒng)微軟

2020-09-29 07:59:22

CPU系統(tǒng)性能

2014-06-12 20:00:14

CentOS 6Hadoop

2014-02-27 13:30:26

CacheLinux系統(tǒng)內存不足

2011-08-04 17:26:15

Windows7CPU占用率audiodg.exe

2021-10-08 14:33:32

Windows 11操作系統(tǒng)微軟

2019-03-07 09:25:59

LinuxCPU交換分區(qū)

2022-05-13 23:46:52

GO編程內存

2015-04-20 10:20:20

高并發(fā)Web服務內存和CPU

2019-09-17 13:00:54

Windows 10微軟CPU
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美中文字幕一区二区三区亚洲 | 91婷婷韩国欧美一区二区 | 欧美h视频 | 人妖av | 精品九九九 | 国产男女猛烈无遮掩视频免费网站 | 精品伊人 | 激情国产视频 | 中文字幕专区 | 黑人成人网 | 亚洲精视频 | 欧美成年人网站 | 国产精品亚洲一区二区三区在线 | 性大毛片视频 | 国产日韩一区二区三免费高清 | 国产精品久久久99 | 先锋资源站 | 丁香五月缴情综合网 | www.日本在线观看 | 亚洲国产一区在线 | 精品亚洲91 | 日本一区二区影视 | 一区二区三区四区在线视频 | 久久精品一区 | 91精品国产综合久久久久久 | zzzwww在线看片免费 | 欧美一区二区三区在线 | 91久久国产综合久久91精品网站 | 国产视频精品区 | 欧美性生活免费 | 欧美激情在线观看一区二区三区 | 一区二区三区四区五区在线视频 | 亚洲一区二区三区免费在线观看 | 欧美日韩一区二区三区四区五区 | 黄色大片在线视频 | 一级aaaaaa毛片免费同男同女 | 91成人免费观看 | 欧美一区二区三区视频在线观看 | 视频一区二区在线观看 | 成人三级av | 国产丝袜一区二区三区免费视频 |