linux環境常用命令和java/jvm常用命令


Linux查看系統內存和cpu情況:

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head

Linux查看系統內存占用情況(概況):

free -h

Linux查看系統內存和cpu等詳細信息:

top

注:

1.內存排序: Shift + M;2.改變內存單位: E鍵;3.顯示詳細路徑: C鍵;4.顯示CPU占比: T鍵;5.顯示內存占比: M鍵;6.高亮顯示: Z鍵;7.列高亮顯示: X鍵;

 

Java查看實時堆棧信息:

jmap -heap PID

Java將堆內存使用的詳細情況輸出到文件:

jmap -dump:file=xxx.hprof PID

jmap -dump:live,format=b,file=xxx.hprof PID (使用hprof二進制形式,輸出jvm的heap內容到文件=.  live子選項是可選的,假如指定live選項,那么只輸出活的對象到文件)

Java查看實時gc信息(5秒刷新一次):

jstat -gc PID 5000

Java實時查看虛擬機的各項參數:

jinfo PID

Java輸出線程dump信息到文件(jstack更多用法參考:https://www.jianshu.com/p/8d5782bc596e):

jstack PID > dump.jstack

 

堆外內存分析

在分析堆外內存時,在網上搜了很多。在分析堆外內存時,使用到了jcmd命令,Native Memory Tracking (NMT) 是Hotspot VM用來分析VM內部內存使用情況的一個功能。我們可以利用jcmd(jdk自帶)這個工具來訪問NMT的數據

在使用jcmd之前,需要配置一些jvm參數,如下如所示:

 

即:-XX:NativeMemoryTracking=[off | summary | detail] 配置該jvm參數,重啟應用即可。

注: -XX:NativeMemoryTracking=必須放在java與-jar之間,如:java -XX:NativeMemoryTracking=detail -jar application.jar

使用命令 jcmd PID VM.native_memory detail scale=MB > a.txt 查看內存的一個使用情況。

這里包含了幾個部分,在分析這些內存的時候,需要搞明白啥意思,具體可以參考文章:https://blog.csdn.net/Developlee/article/details/100691997

搞清楚每一項代表的含義,那接下來就是結合自己的代碼,分析哪塊可能有問題。對於我問題,通過 jcmd PID VM.native_memory baseline 設置基准線,耐心多次 jcmd pid VM.native_memory detail.diff scale=MB > a_diff.txt 看差值,然后得出有詳細信息。

 

 

以上的Code為代碼緩存(默認是240M),通過-XX:ReservedCodeCacheSize=50m參數可以設置其大小

Class的大小需要如下2個參數(元空間)配合配置,大小根據實際情況配置(參考:https://blog.csdn.net/mayifan0/article/details/80479903

-XX:MaxMetaspaceSize=150m 

-XX:CompressedClassSpaceSize=120m  (jdk8默認1G)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM