最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

Java開發(fā)者必備常用的工具,準點下班不在話下

2021-01-04 14:30 作者:編程大戰(zhàn)  | 我要投稿

以一問一答的形式學習java工具

Q:檢查內存泄露的工具有?
A: jmap生成dump轉儲文件,jhat可視化查看。

Q:某進程CPU使用率一直占滿,用什么工具可以排查?
A:top -Hp pid找到最占CPU的線程
然后jstack來查找那個線程此時所處的堆棧,確定問題發(fā)生位置。

各工具詳細介紹

jstack

  • 全稱:JVM Stack Trance

  • 作用:查看某個java進程的堆棧情況, 可用于確認死鎖、IO等待、死循環(huán)等問題。

命令用法:

  • jstack pid

  • 查看死鎖例子如下圖,找到wait的lock和已被鎖的lock

  • 查看等待IO例子:

jstat

作用:查看進程中內存使用情況,但只能給出一些簡單統(tǒng)計數據

  • 統(tǒng)計加載了多少類以及占用空間 jstat -class pid

  • 統(tǒng)計編譯了多少文件 jstat -compiler 10

Q: jstat -GCutil {pid} 2000 可以每隔2秒,對pid進程打印內存使用統(tǒng)計信息。

GCutil的輸出如下:

里面哪個百分比如果長期處于99%-100%會有OMM風險?(OutOfMemoryError)

A:如果E和O即新生代、老年代內存區(qū)一直都處于滿的狀態(tài),則很有可能會引發(fā)OMM風險。就像下面這個。

jmap

  • 全稱: JVM Memory Map

  • 作用:生成進程的內存堆快照

當需要看一下進程里是什么東西占用了過多內存時, 可以用jmap打印一下堆快照。

命令用法:

  • 打印堆快照: jmap -dump:file=./dumpfile.dump 進程pid

  • 查看特定類所占用的情況: jmap -histo:live 進程pid | grep 類名

Q: 用jmap檢查內存泄漏實例
我分了3次,每個1h調用jmap查看進程的內存實例,查看該時刻各對象數量
第一次查看情況如下:

第二次隔了2各小時,查看情況如下:

請問哪個對象可能有內存泄漏風險?

A:ObjectA可能有泄露, 因為他的對象數量增加最快,說明對象一直在增加且很多無法進行GC釋放。

jhat

  • 全稱: JVM Heap Analysis Tool

  • 作用:和jmap配合, 可以解析jmap生成的堆快照, 支持生成1個web進程供我們分析和查看。

命令用法:

  • jhat -J-Xmx515M dumpfile.dump
    此時就會啟動1個webServer,然后我們去訪問就行了

jdb

  • 全稱:Java Debugger

  • 作用:用來對core文件和正在運行的Java進程進行實時地調試,類似于c++里的gdb

常見用法:

  • 啟動進程并調試: jdb -classpath . Test

  • 至二級調試某進程: jdb -attach 8000 -sourcepath /Users/wefit/Development/study/java/jtest/src/

jcmd

作用:多功能的工具,可以用它來導出堆、查看Java進程、導出線程信息、執(zhí)行GC、還可以進行采樣分析,可以理解為1個性能調優(yōu)時用的工具。

常見命令:

  • 查看 當前機器上所有的 jvm 進程信息: jcmd -l

  • 查看指定進程的性能統(tǒng)計信息: jcmd pid PerfCounter.print

  • 列出當前運行的 java 進程可以執(zhí)行的操作: jcmd PID help

  • 查看線程堆棧信息: jcmd PID Thread.print

  • 查看堆內存信息: jcmd PID GC.heap_dump FILE_NAME

jps

  • 簡單記法: JVM process status

  • 全名:Java Virtual Machine Process Status Tool

  • 作用: 顯示?當前系統(tǒng)用戶?的?所有?Java進程情況及其進程號

常用命令:

  • 查看進程jvm參數:jps -v

  • 輸出程序main class的完整package名或程序的jar文件完整路徑名:jps -l

  • 輸出傳遞給main方法的參數:jps -m

jinfo

jvm infomation
作用:和jps功能類似,但是支持根據指定pis查看指定進程

  • 可以查看JVM參數、系統(tǒng)參數、調整jvm參數

  • 但不支持查看java程序的內存使用情況

javap

把java字節(jié)碼文件反匯編為Java源碼文件。

javac

java編譯工具
javac的執(zhí)行過程:

JDK可視化工具

jconsole

可監(jiān)控jvm,即可監(jiān)控本地jvm也可監(jiān)控遠程jvm,管理應用程序,可以檢查死鎖等諸多問題。

jvisualvm

  • jvisualvm可以監(jiān)控遠程服務器的運行狀態(tài)

  • 可以在java程序運行起來后再運行, 通過某些協(xié)議連接到java進程中。

  • 運行時, 可以不需要配置配置環(huán)境、虛擬機參數等。

想要獲取更多學習資料嗎?評論回復“666”,尚學堂最新的教學資料就是你的啦~



Java開發(fā)者必備常用的工具,準點下班不在話下的評論 (共 條)

分享到微博請遵守國家法律
财经| 青田县| 平乐县| 普定县| 百色市| 沧源| 凉城县| 鸡东县| 富顺县| 沅陵县| 政和县| 福海县| 成武县| 青川县| 甘德县| 宁明县| 鹤岗市| 将乐县| 葵青区| 龙井市| 仁布县| 灌云县| 苏州市| 中超| 沁源县| 慈溪市| 定州市| 蓝田县| 余干县| 吴堡县| 皮山县| 双江| 新乡县| 宕昌县| 鄂托克旗| 黄冈市| 同江市| 蒙山县| 黄陵县| 淮滨县| 乐山市|