日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JVM调优工具的使用方法

發布時間:2023/12/16 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM调优工具的使用方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

常用的JVM調優工具:Jconsole,jProfile,VisualVM

Jconsole : jdk自帶,功能簡單,但是可以在系統有一定負荷的情況下使用。對垃圾回收算法有很詳細的跟蹤。詳細說明參考這里

JProfiler:商業軟件,需要付費。功能強大。詳細說明參考這里

VisualVM:JDK自帶,功能強大,與JProfiler類似。推薦。

調優的方法

觀察內存釋放情況、集合類檢查、對象樹

上面這些調優工具都提供了強大的功能,但是總的來說一般分為以下幾類功能

堆信息查看

可查看堆空間大小分配(年輕代、年老代、持久代分配)

提供即時的垃圾回收功能

垃圾監控(長時間監控回收情況)

查看堆內類、對象信息查看:數量、類型等

對象引用情況查看

有了堆信息查看方面的功能,我們一般可以順利解決以下問題:

–年老代年輕代大小劃分是否合理

–內存泄漏

–垃圾回收算法設置是否合理

線程監控

線程信息監控:系統線程數量。

線程狀態監控:各個線程都處在什么樣的狀態下

Dump線程詳細信息:查看線程內部運行情況

死鎖檢查

熱點分析

CPU熱點:檢查系統哪些方法占用的大量CPU時間內存熱點:檢查哪些對象在系統中數量最大(一定時間內存活對象和銷毀對象一起統計)這兩個東西對于系統優化很有幫助。我們可以根據找到的熱點,有針對性的進行系統的瓶頸查找和優化,而不是漫無目的的進行所有代碼的優化。

快照

快照是系統運行到某一時刻的一個定格。在我們進行調優的時候,不可能用眼睛去跟蹤所有系統變化,依賴快照功能,我們就可以進行系統兩個不同運行時刻,對象(或類、線程等)的不同,以便快速找到問題舉例說,要檢查系統進行垃圾回收以后,是否還有該收回的對象被遺漏的。那么就可以在進行垃圾回收前后,分別進行一次堆情況的快照,然后對比兩次快照的對象情況。

內存泄漏檢查

內存泄漏是比較常見的問題,而且解決方法也比較通用,這里可以重點說一下,而線程、熱點方面的問題則是具體問題具體分析了。內存泄漏一般可以理解為系統資源(各方面的資源,堆、棧、線程等)在錯誤使用的情況下,導致使用完畢的資源無法回收(或沒有回收),從而導致新的資源分配請求無法完成,引起系統錯誤。內存泄漏對系統危害比較大,甚至會導致系統崩潰。需要區別一下,內存泄漏和系統超負荷兩者是有區別的,雖然可能導致的最終結果是一樣的。內存泄漏是用完的資源沒有回收引起錯誤,而系統超負荷則是系統確實沒有那么多資源可以分配了(其他的資源都在使用)。

年老代堆空間被占滿

異常: java.lang.OutOfMemoryError: Java heap space

說明:

這是最典型的內存泄漏方式,簡單說就是所有堆空間都被無法回收的垃圾對象占滿,虛擬機無法再次分配新空間。如上圖所示,這是非常典型的內存泄漏的垃圾回收情況圖。所有峰值部分都是一次垃圾回收點,所有谷底部分表示是一次垃圾回收后剩余的內存。連接所有谷底的點,可以發現一條由底到高的線,這說明,隨時間的推移,系統的堆空間被不斷占滿,最終會占滿整個堆空間。因此可以初步認為系統內部可能有內存泄漏。(上面的圖僅供示例,在實際情況下收集數據的時間需要更長,比如幾個小時或者幾天)

解決:

這種方式解決起來也比較容易,一般就是根據垃圾回收前后情況對比,同時根據對象引用情況(常見的集合對象引用)分析,基本都可以找到泄漏點。

持久代被占滿

異常:java.lang.OutOfMemoryError: PermGen space

說明:

Perm空間被占滿。無法為新的class分配存儲空間而引發的異常。這個異常以前是沒有的,但是在Java反射大量使用的情況下,這個異常就比較常見了。主要原因就是大量動態反射生成的類不斷被加載,最終導致Perm區被占滿。更可怕的是,不同的classLoader即便使用了相同的類,但是都會對其進行加載,相當于同一個東西,如果有N個classLoader那么他將會被加載N次。因此,某些情況下,這個問題基本視為無解。當然,存在大量classLoader和大量反射類的情況其實也不多。

解決:

1. -XX:MaxPermSize=16m2. 換用JDK。比如JRocket。

堆棧溢出

異常:java.lang.StackOverflowError

說明:這個就不多說了,一般就是遞歸沒返回,或者循環調用造成

線程堆棧滿

異常:Fatal: Stack size too small

說明:java中一個線程的空間大小是有限制的。JDK5.0以后這個值是1M。與這個線程相關的數據將會保存在其中。但是當線程空間滿了以后,將會出現上面異常。

解決:增加線程棧大小。-Xss2m。但這個配置無法解決根本問題,還要看代碼部分是否有造成泄漏的部分。

系統內存被占滿

異常:java.lang.OutOfMemoryError: unable to create new native thread

說明:

這個異常是由于操作系統沒有足夠的資源來產生這個線程造成的。系統創建線程時,除了要在Java堆中分配內存外,操作系統本身也需要分配資源來創建線程。因此,當線程數量大到一定程度以后,堆中或許還有空間,但是操作系統分配不出資源來了,就出現這個異常了。

分配給Java虛擬機的內存越多,系統剩余的資源就越少,因此,當系統內存固定時,分配給Java虛擬機的內存越多,那么,系統總共能夠產生的線程也就越少,兩者成反比的關系。同時,可以通過修改-Xss來減少分配給單個線程的空間,也可以起到增加系統總共生產的線程數。

解決:

1. 重新設計系統減少線程數量。2. 線程數量不能減少的情況下,通過-Xss減小單個線程大小。以便能生產更多的線程。

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

總結

以上是生活随笔為你收集整理的JVM调优工具的使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。