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

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

幾款Java開發(fā)者必備常用的工具,準(zhǔn)點(diǎn)下班不在話下

2021-01-07 09:35 作者:自學(xué)Python的小姐姐呀  | 我要投稿

以一問一答的形式學(xué)習(xí)java工具

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

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

§ 各工具詳細(xì)介紹

§ jstack

全稱: JVM Stack Trance
作用: 查看某個java進(jìn)程的堆棧情況, 可用于確認(rèn)死鎖、IO等待、死循環(huán)等問題。
命令用法:

  • jstack pid

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

  • 查看等待IO例子:

§ jstat

全稱:
作用:
查看進(jìn)程中內(nèi)存使用情況,但只能給出一些簡單統(tǒng)計數(shù)據(jù)

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

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

Q: jstat -GCutil {pid} 2000 可以每隔2秒,對pid進(jìn)程打印內(nèi)存使用統(tǒng)計信息。
GCutil的輸出如下

里面哪個百分比如果長期處于99%-100%會有OMM風(fēng)險?(OutOfMemoryError)
A:
如果E和O即新生代、老年代內(nèi)存區(qū)一直都處于滿的狀態(tài),則很有可能會引發(fā)OMM風(fēng)險。就像下面這個。

§ jmap

全稱: JVM Memory Map
作用:生成進(jìn)程的內(nèi)存堆快照
當(dāng)需要看一下進(jìn)程里是什么東西占用了過多內(nèi)存時, 可以用jmap打印一下堆快照。
命令用法:

  • 打印堆快照: jmap -dump:file=./dumpfile.dump 進(jìn)程pid

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

Q: 用jmap檢查內(nèi)存泄漏實(shí)例
我分了3次,每個1h調(diào)用jmap查看進(jìn)程的內(nèi)存實(shí)例,查看該時刻各對象數(shù)量
第一次查看情況如下:


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


請問哪個對象可能有內(nèi)存泄漏風(fēng)險?
A:
ObjectA可能有泄露, 因?yàn)樗膶ο髷?shù)量增加最快,說明對象一直在增加且很多無法進(jìn)行GC釋放。

§ jhat

全稱: JVM Heap Analysis Tool
和jmap配合, 可以解析jmap生成的堆快照, 支持生成1個web進(jìn)程供我們分析和查看。
命令用法:

  • jhat -J-Xmx515M dumpfile.dump
    此時就會啟動1個webServer,然后我們?nèi)ピL問就行了

§ jdb

全稱:Java Debugger
作用:用來對core文件和正在運(yùn)行的Java進(jìn)程進(jìn)行實(shí)時地調(diào)試,類似于c++里的gdb
常見用法:

  • 啟動進(jìn)程并調(diào)試: jdb -classpath . Test

  • 至二級調(diào)試某進(jìn)程: jdb -attach 8000 -sourcepath /Users/wefit/Development/study/java/jtest/src/

§ jcmd

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

  • 查看 當(dāng)前機(jī)器上所有的 jvm 進(jìn)程信息: jcmd -l

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

  • 列出當(dāng)前運(yùn)行的 java 進(jìn)程可以執(zhí)行的操作: jcmd PID help

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

  • 查看堆內(nèi)存信息: jcmd PID GC.heap_dump FILE_NAME

§ jps

簡單記法: JVM process status
全名:Java Virtual Machine Process Status Tool
作用: 顯示?當(dāng)前系統(tǒng)用戶?的?所有?Java進(jìn)程情況及其進(jìn)程號
常用命令:

  • 查看進(jìn)程jvm參數(shù): jps -v

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

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

§ jinfo

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

  • 可以查看JVM參數(shù)、系統(tǒng)參數(shù)、調(diào)整jvm參數(shù)

  • 但不支持查看java程序的內(nèi)存使用情況

§ javap

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

§ javac

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

§ JDK可視化工具

§ jconsole

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

§ jvisualvm

Q:

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

  • 可以在java程序運(yùn)行起來后再運(yùn)行, 通過某些協(xié)議連接到j(luò)ava進(jìn)程中。

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

文章來自網(wǎng)絡(luò)侵刪

想要了解更多可以點(diǎn)擊:

尚學(xué)堂java基礎(chǔ)入門教_java基礎(chǔ)視頻java基礎(chǔ)教程_java300集java入門

幾款Java開發(fā)者必備常用的工具,準(zhǔn)點(diǎn)下班不在話下的評論 (共 條)

分享到微博請遵守國家法律
赣榆县| 新河县| 阜南县| 南昌县| 洛隆县| 图们市| 昭苏县| 驻马店市| 丰城市| 海盐县| 建德市| 崇文区| 闻喜县| 三亚市| 呼和浩特市| 镇坪县| 舒城县| 钟祥市| 天峨县| 陆丰市| 富平县| 叙永县| 阿尔山市| 新安县| 翁源县| 十堰市| 克拉玛依市| 五寨县| 嘉荫县| 蛟河市| 南开区| 宣恩县| 东乌珠穆沁旗| 乌拉特前旗| 雅安市| 太康县| 中牟县| 壤塘县| 长丰县| 大足县| 上蔡县|