又是一篇備忘... 主要記錄一些知識,進行一些資源的彙總. 先來群里 大大提供的兩張圖,清晰易懂: Dockerized Java https://www.youtube.com/watch?v=NQ5hTEp GTM Java on Linux for devs and ops https://w ...
又是一篇備忘...
主要記錄一些知識,進行一些資源的彙總.
先來群里liufor
大大提供的兩張圖,清晰易懂:
Dockerized Java
https://www.youtube.com/watch?v=NQ5hTEp-GTM
Java on Linux for devs and ops
https://www.slideshare.net/aragozin/java-on-linux-for-devs-and-ops
常用配置&命令
常用命令
JVM啟動用的命令行
jcmd process_id VM.command_line
手工觸發gc
jcmd process_id GC.run
顯示調優標誌
jcmd process_id VM.flags [-all]
all比較有用 可以看到全部的 包括預設值 在排查一些問題的時候能看的信息比較多
記憶體dump 使用情況查看:
jmap -dump:format=b,file=test.bin process_id
jmap -heap process_id
更多記憶體信息
在linux上使用,使用/proc/pid/map內的信息,以及pmap.
使用gdp dump出記憶體查看信息
詳見: http://lysu.github.io/blog/2015/02/02/how-to-deal-with-non-heap-or-native-memory-leak/
GC log相關
//日誌數量 每個log大小 存放位置
-XX:NumberOfGCLogFiles=7
-XX:GCLogFileSize=64M
-Xloggc:/opt/jetty/logs/gc.log
//絕對時間戳 相對的用-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
//詳細的信息 平均時間等 精簡的用-XX:+PrintGC
-XX:+PrintGCDetails
NMT
-XX:NativeMemoryTracking=[off | summary | detail]
jcmd <pid> VM.native_memory [summary | detail | baseline | summary.diff | detail.diff | shutdown] [scale= KB | MB | GB]
可以比較有效看到幾個部分的記憶體使用情況 以及設置baseline後 在看具體的變化量
使用時要先設置JVM參數 生產環節慎用detail
參考文檔:
https://docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/tooldescr007.html
博客 & 文章
一些文章和不錯的博客.
隨著時間的遷移和JVM的升級,這裡(包括這文)的內容可能會過時,自己甄別一下~
你假笨博客
http://lovestblog.cn/
Alexey Ragozin的博客(也是第二圖ppt的作者)
http://blog.ragozin.info/
JVM記憶體調優相關的一些筆記(雜)
https://zhanjindong.com/2016/03/02/jvm-memory-tunning-notes
REDUCE LONG GC PAUSES
https://blog.gceasy.io/2016/11/22/reduce-long-gc-pauses/
Oh the Places Your Java Memory Goes
https://jkutner.github.io/2017/04/28/oh-the-places-your-java-memory-goes.html