JVM optimization

来自WHY42
Riguz讨论 | 贡献2024年4月15日 (一) 02:58的版本 →‎top

Linux system tool

top

Use top to view process status:

$ top
top - 10:55:37 up 1234 days, 20:33,  1 user,  load average: 26.61, 31.80, 35.25
Tasks: 485 total,   2 running, 483 sleeping,   0 stopped,   0 zombie
%Cpu(s): 82.8 us,  9.4 sy,  0.0 ni,  5.6 id,  0.0 wa,  0.0 hi,  2.2 si,  0.0 st
KiB Mem : 26359952+total, 10300115+free, 79046432 used, 81551928 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 17903020+avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                
 35253 work      20   0   27.3g  10.6g  11532 S 817.5  4.2 795248:54 java                                                                   
 38200 work      20   0   27.2g  10.4g  11480 S 774.6  4.1 782100:51 java                                                                   
 33196 work      20   0   27.2g  10.5g  11496 S 663.0  4.2 767660:17 java                                                                   
 38110 work      20   0   27.2g  10.4g  11496 S 368.3  4.2 717635:28 java                                                                   
 38489 work      20   0   27.2g  10.5g  11516 S 286.1  4.2 797625:38 java                                                                   
198487 work      20   0  134384  18352    888 R  64.0  0.0   0:03.06 netstat                                                                
120786 work      20   0   21.7g   4.8g   7032 S  15.5  1.9 410952:23 java                                                                   
120732 work      20   0   21.7g   4.8g   6996 S  11.2  1.9 346910:48 java                                                                   
120726 work      20   0   21.7g   4.8g   6980 S  10.2  1.9 355160:19 java                                                                   
120838 work      20   0   21.7g   4.9g   7244 S   5.6  1.9 407095:04 java                                                                   
198488 work      20   0  113540    976    820 S   2.3  0.0   0:00.13 awk                                                                    
197696 root      20   0       0      0      0 S   0.7  0.0   0:00.34 kworker/15:2                                                           
    10 root      20   0       0      0      0 S   0.3  0.0  10342:55 rcu_sched                                                              
   161 root      20   0       0      0      0 S   0.3  0.0 947:20.63 ksoftirqd/30                                                           
 18515 root      20   0  573816  14272   2968 S   0.3  0.0 250:14.40 tuned

View a specific process:

$ top -p 35353
top - 10:56:53 up 1234 days, 20:34,  1 user,  load average: 29.17, 31.89, 35.03
Tasks:   1 total,   0 running,   1 sleeping,   0 stopped,   0 zombie
%Cpu(s): 43.6 us,  6.3 sy,  0.0 ni, 47.5 id,  0.0 wa,  0.0 hi,  2.6 si,  0.0 st
KiB Mem : 26359952+total, 10297040+free, 78976912 used, 81652208 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 17910000+avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                
 35253 work      20   0   27.3g  10.6g  11532 S 373.4  4.2 795254:23 java

And press H to view threads:

$ top -p 35253
top - 10:58:20 up 1234 days, 20:35,  1 user,  load average: 28.47, 31.40, 34.61
Threads: 968 total,   3 running, 965 sleeping,   0 stopped,   0 zombie
%Cpu(s): 57.2 us,  6.7 sy,  0.0 ni, 33.8 id,  0.0 wa,  0.0 hi,  2.3 si,  0.0 st
KiB Mem : 26359952+total, 10287185+free, 79023616 used, 81704048 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 17905331+avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                 
 35309 work      20   0   27.3g  10.6g  11532 S 71.6  4.2   8159:47 G1 Conc#5                                                               
 35306 work      20   0   27.3g  10.6g  11532 S 69.3  4.2   8159:23 G1 Conc#2                                                               
 35308 work      20   0   27.3g  10.6g  11532 S 69.3  4.2   8160:05 G1 Conc#4                                                               
 35307 work      20   0   27.3g  10.6g  11532 S 69.0  4.2   8160:03 G1 Conc#3                                                               
 35257 work      20   0   27.3g  10.6g  11532 S 68.3  4.2   8160:12 G1 Conc#0                                                               
 35305 work      20   0   27.3g  10.6g  11532 S 68.3  4.2   8159:48 G1 Conc#1                                                               
 35375 work      20   0   27.3g  10.6g  11532 S 13.9  4.2 589:09.39 http-nio-0.0.0.                                                         
 35469 work      20   0   27.3g  10.6g  11532 S  7.9  4.2  29171:28 http-nio-8442-P                                                         
 35470 work      20   0   27.3g  10.6g  11532 S  6.3  4.2  27653:44 http-nio-8442-A                                                         
189160 work      20   0   27.3g  10.6g  11532 R  6.3  4.2 587:47.64 http-nio-0.0.0.                                                         
 35457 work      20   0   27.3g  10.6g  11532 S  5.0  4.2  17071:54 http-nio-0.0.0.                                                         
 35458 work      20   0   27.3g  10.6g  11532 S  4.0  4.2  14972:14 http-nio-0.0.0.                                                         
 11726 work      20   0   27.3g  10.6g  11532 S  2.0  4.2 487:53.72 http-nio-0.0.0.                                                         
 35348 work      20   0   27.3g  10.6g  11532 S  1.7  4.2  12352:21 pulsar-timer-5-                                                         
 35288 work      20   0   27.3g  10.6g  11532 S  1.3  4.2 805:44.45 GC Thread#6                                                             
 35304 work      20   0   27.3g  10.6g  11532 S  1.3  4.2 804:14.37 GC Thread#22                                                            
 35284 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 806:37.70 GC Thread#2                                                             
 35285 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 806:05.20 GC Thread#3                                                             
 35286 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 805:39.92 GC Thread#4                                                             
 35287 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 804:21.61 GC Thread#5                                                             
 35290 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 806:57.15 GC Thread#8                                                             
 35293 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 807:10.16 GC Thread#11                                                            
 35294 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 804:48.06 GC Thread#12                                                            
 35297 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 806:14.76 GC Thread#15                                                            
 35299 work      20   0   27.3g  10.6g  11532 S  1.0  4.2 806:53.58 GC Thread#17

View threads

查看Java进程

jps
top #shift +m按内存排序


有介绍说可以通过PS命令查看进程的线程占用情况,但这里没能提供更多的信息

ps -mp 31560 -o THREAD,tid,time,rss,size,%mem

jmap命令

jmap [option] <pid>
    <none>               to print same info as Solaris pmap
    -heap                to print java heap summary
    -histo[:live]        to print histogram of java object heap; if the "live"
                         suboption is specified, only count live objects
    -permstat            to print permanent generation statistics
...

其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。

jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。

jmap -histo:live 31560 | head -n 10

其中:

  1. [C is a char[]
  2. [S is a short[]
  3. [I is a int[]
  4. [B is a byte[]
  5. [[I is a int[][]
  1. 参考文章 [[1]]