欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java中的內(nèi)存溢出方式

 更新時間:2024年12月20日 08:59:50   作者:子裳  
文章介紹了如何使用jmap和IBMHeapAnalyzer等工具分析OutOfMemoryError: Compressedclassspace錯誤,發(fā)現(xiàn)問題出在/org/pf4j/PluginClassLoader加載了大量類

問題

kettle數(shù)據(jù)采集系統(tǒng)崩潰-查看報錯信息為:

OutOfMemoryError: Compressed class space

可以看到是內(nèi)存溢出,但是可以看到的后面的信息為 Compressed class space ,而不是java heap。

Compressed class space為壓縮類空間, 這個空間是保存在64位系統(tǒng)中類引用地址的空間,默認(rèn)大小為1G,單個類引用地址的空間是1K

意味著加載的類已經(jīng)超過1百萬,這肯定是存在問題的,需要進(jìn)一步查找問題。

內(nèi)存dump

將系統(tǒng)當(dāng)時的內(nèi)存情況dump下來進(jìn)行分析

jmap

java自帶visualVM,jmap等分析工具可以直接使用 

將當(dāng)前系統(tǒng)活躍的內(nèi)存數(shù)據(jù)寫入到kettle-test-dump-03020941.hprof 文件中,系統(tǒng)pid為18090

jmap -dump:live,format=b,file=./kettle-test-dump-03020941.hprof 18090

在實際使用時,發(fā)現(xiàn)jdk是openjdk,并未自帶jmap等工具,可以進(jìn)行升級.但是怕影響系統(tǒng)運行,另外下載了一個jdk使用

分析

使用工具進(jìn)行分析,下面介紹兩種工具進(jìn)行查看,java自帶的jvisualVM和IBM HeapAnalyzer: 

jvisualVM不需要下載,但是不會自行統(tǒng)計,需要自己寫sql來進(jìn)行深度分析 

IBM HeapAnalyzer提供表格,餅圖的方式,更加直觀的看到數(shù)據(jù),并且會分析出最可能發(fā)生內(nèi)存泄漏的地方

jvisualVM

使用本地jdk自帶的visualVM來進(jìn)行分析查看

1.下載hprof文件到本地

2.找到j(luò)dk目錄,找到 bin/jvisualvm.exe ,雙擊打開,界面如下:

3.導(dǎo)入文件 點擊 文件->裝入->切換到dump文件 ->找到hprof文件打開

4.點開類視圖,過濾出classload ,并根據(jù)classload 找到對應(yīng)的示例和加載類的個數(shù),數(shù)據(jù)不太直觀,但是統(tǒng)計后可以看出問題出在/org/pf4j/PluginClassLoader,根據(jù)此信息查找bug出現(xiàn)的原因。

IBM HeapAnalyzer

本來想使用MAT,但是官網(wǎng)的下載太慢等不起,正好同事安利,就使用了這個:IBM HeapAnalyzer 

1.下載hprof文件到本地

2.打開程序 找到ha457.jar包目錄

java -jar ha457.jar

打開后可以看到以下界面

3.打開下載的文件

4.查找類加載項

上圖中有三個表格,第一個是加載器類型表格(包括加載器類型,加載器實例數(shù),加載器加載的類的數(shù)量),第二個表格是單種加載器的每個實例,以及加載的數(shù)量,第三個是每個加載器實例加載的類 

可以看到 /org/pf4j/PluginClassLoader 的加載器實例有1千多個,類加載有17萬個,大概可以判定是異常數(shù)據(jù)。等待一段時間后再dump下內(nèi)存,發(fā)現(xiàn)加載的類達(dá)到30幾萬,判斷內(nèi)存溢出就是由這個加載器不斷加載類卻不釋放導(dǎo)致。 

根據(jù)第三個表格可以找到對應(yīng)的類,查找到具體原因。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中==與equals的區(qū)別小結(jié)

    Java中==與equals的區(qū)別小結(jié)

    這篇文章主要介紹了Java中==與equals的區(qū)別小結(jié),本文總結(jié)結(jié)論:== 與 equals()比較的內(nèi)容是不同的,equals()方式是String類中的方法,它用于比較兩個對象引用所指的內(nèi)容是否相等,而 == 比較的是兩個對象引用的地址是否相等,需要的朋友可以參考下
    2015-06-06
  • java實現(xiàn)簡單圖片上傳下載功能

    java實現(xiàn)簡單圖片上傳下載功能

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)簡單圖片上傳下載功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • SpringBoot整合Mybatis無法掃描xml文件的解決

    SpringBoot整合Mybatis無法掃描xml文件的解決

    這篇文章主要介紹了SpringBoot整合Mybatis無法掃描xml文件的解決操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • java代理 jdk動態(tài)代理應(yīng)用案列

    java代理 jdk動態(tài)代理應(yīng)用案列

    java代理有jdk動態(tài)代理、cglib代理,這里只說下jdk動態(tài)代理,jdk動態(tài)代理主要使用的是java反射機制,需要了解的朋友可以參考下
    2012-11-11
  • 關(guān)于自定義過濾器獲取不到session問題

    關(guān)于自定義過濾器獲取不到session問題

    這篇文章主要介紹了關(guān)于自定義過濾器獲取不到session問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot之如何同時連接多個redis

    springboot之如何同時連接多個redis

    這篇文章主要介紹了springboot之如何同時連接多個redis問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 詳解eclipse中Maven工程使用Tomcat7以上插件的方法

    詳解eclipse中Maven工程使用Tomcat7以上插件的方法

    本篇文章主要介紹了詳解eclipse中Maven工程使用Tomcat7以上插件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • Java列表元素自定義排序方式

    Java列表元素自定義排序方式

    文章介紹了在Java開發(fā)中如何對列表元素進(jìn)行自定義排序,通過實現(xiàn)`Comparator`接口并重寫`compare`方法來指定自定義排序規(guī)則,示例展示了如何對漢字?jǐn)?shù)字進(jìn)行排序,并通過改變自定義順序列表的元素添加順序來實現(xiàn)倒序排序
    2024-12-12
  • 最新hadoop安裝教程及hadoop的命令使用(親測可用)

    最新hadoop安裝教程及hadoop的命令使用(親測可用)

    這篇文章主要介紹了最新hadoop安裝教程(親測可用),本文主要講解了如何安裝hadoop、使用hadoop的命令及遇到的問題解決,需要的朋友可以參考下
    2022-06-06
  • Java項目打包發(fā)布到maven私倉常見的幾種方式

    Java項目打包發(fā)布到maven私倉常見的幾種方式

    這篇文章主要介紹了項目打包發(fā)布到maven私倉常見的幾種方式,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下
    2021-03-03

最新評論