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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

hprof文件分析工具_【赵强老师】如何分析Java的内存溢出问题

發布時間:2024/2/28 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hprof文件分析工具_【赵强老师】如何分析Java的内存溢出问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

歡迎關注趙強老師微信公眾號:myitshare

一、什么是內存溢出?

內存溢出(OOM:out of memory)通俗理解就是內存不夠,通常在運行大型軟件或游戲時,軟件或游戲所需要的內存遠遠超出了你主機內安裝的內存所承受大小,就叫內存溢出。

在Java中,將會產生java.lang.OutOfMemoryError。看下關于的官方說明: Thrown when the Java Virtual Machine cannot allocate an object because it is out of memory, and no more memory could be made available by the garbage collector. 意思就是說,當JVM因為沒有足夠的內存來為對象分配空間并且垃圾回收器也已經沒有空間可回收時,就會拋出這個error(注:非exception,因為這個問題已經嚴重到不足以被應用處理)。

二、為什么產生OOM?

為什么會沒有內存了呢?原因不外乎有兩點:

  • 分配的少了:比如虛擬機本身可使用的內存(一般通過啟動時的VM參數指定)太少。
  • 應用用的太多,并且用完沒釋放,浪費了。此時就會造成內存泄露或者內存溢出。

在Java語言中,由于存在了垃圾自動回收機制,所以,我們一般不用去主動釋放不用的對象所占的內存,也就是理論上來說,是不會存在“內存泄露”的。但是,如果編碼不當,比如,將某個對象的引用放到了全局的Map中,雖然方法結束了,但是由于垃圾回收器會根據對象的引用情況來回收內存,導致該對象不能被及時的回收。如果該種情況出現次數多了,就會導致內存溢出,比如系統中經常使用的緩存機制。Java中的內存泄露,不同于C++中的忘了delete,往往是邏輯上的原因泄露。

三、如何分析Java OOM?

在故障定位(尤其是out of memory)和性能分析的時候,經常會用到一些文件來幫助我們排除代碼問題。這些文件記錄了JVM運行期間的內存占用、線程執行等情況,這就是我們常說的dump文件。常用的有heap dump和thread dump(也叫javacore,或java dump)。我們可以這么理解:heap dump記錄內存信息的,thread dump是記錄CPU信息的。這里我們重點介紹heap dump。
heap dump文件是一個二進制文件,它保存了某一時刻JVM堆中對象使用情況。HeapDump文件是指定時刻的Java堆棧的快照,是一種鏡像文件。Heap Analyzer工具通過分析HeapDump文件,哪些對象占用了太多的堆棧空間,來發現導致內存泄露或者可能引起內存泄露的對象。

四、案例

首先,我們來開發一段Java程序。

import java.util.*;public class Test {public static void main(String[] args) {List<String> list = new ArrayList<String>();int i = 0;while (true) {list.add(new String("test")); }}}

使用下面的命令運行該程序時設置JVM的堆內存(heap size)的極限值為10M(-Xmx10m)。

java -Xmx10m Test

很快,程序將會產生OOM的錯誤,如下圖所示:

五、如何生成Head Dump文件?

我們可以在運行Java程序的時候,加入下面的參數:

-XX:+HeapDumpOnOutOfMemoryError

此參數是幫助生成dump文件,程序啟動后直到拋出OOM異常。異常拋出后,在程序的classpath下會生成以一個以.hprof結尾的文件,如:java_pid4504.hprof,這就是我們需要的dump文件。

如下圖所示:

六、使用IBM heapAnalyzer分析Head Dump文件

IBM heapAnalyzer(https://www.ibm.com/support/pages/ibm-heapanalyzer)是IBM開發的強大的內存dump分析工具,,IBM heapAnalyzer是通過分析OOM后的Java heap dump文件的,通過對dump文件的分析找到內存可能泄露的點。

啟動IBM heapAnalyzer,并導入剛才生成的Heap Dump文件,如下圖所示。

通過分析我們會發現,系統94.19%的內存都被一個ArrayList占用了(里面保存的都是Object)。這里就有可能是一個內存的溢出點。當然,我們這個例子非常典型,在實際工作可能沒有這么明顯,需要具體問題具體分析。

總結

以上是生活随笔為你收集整理的hprof文件分析工具_【赵强老师】如何分析Java的内存溢出问题的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本大片黄 | 亚洲精品免费网站 | 国产麻豆一区二区 | 综合色播| 三级av在线免费观看 | 美女视频毛片 | 一边摸一边做爽的视频17国产 | 亚洲欧美精品一区 | 玉女心经 在线 | 欧美一区二区三 | 国产一区二区三区在线视频观看 | 色桃av | 意大利少妇愉情理伦片 | 东北少妇高潮抽搐 | 啊av在线 | 少妇高潮21p | 奇米第四色在线 | 新超碰97| 精品区 | 亚洲视频久久久 | 亚洲第一视频 | 久久女同互慰一区二区三区 | 相亲对象是问题学生动漫免费观看 | www黄在线观看 | 亚洲视频在线一区二区 | 成人免费观看网址 | 亚洲射 | 亚洲av综合色区无码一区爱av | 亚洲精品一区二区三区蜜桃久 | 色呦呦在线播放 | 国产精品另类 | av优选在线观看 | 久草黄色| 青青青免费在线视频 | 九九视频免费观看 | 婷婷久久一区 | 久久久久久影院 | 涩涩爱在线 | 在线日韩成人 | 黄色大片久久 | 久久国产亚洲精品无码 | 亚洲xx视频| 欧美黄色成人 | 正在播放超嫩在线播放 | 免费av在线播放网址 | 国产综合亚洲精品一区二 | 成人网视频 | 国产成人无码a区在线观看视频 | 一区二区免费在线观看视频 | 国产精品青青草 | 四川少妇xxx奶大xxx | 亚洲国产精品综合 | 欧美黄色大片视频 | xxxx69国产| 日韩久久一区二区三区 | 国产网红女主播精品视频 | 巨乳在线播放 | 91看片视频 | 91蜜桃传媒精品久久久一区二区 | aaa一级片| 中文字幕日韩人妻在线视频 | 少妇裸体淫交视频免费看高清 | 欧美伦理片网站 | 99热在线观看免费精品 | 夜夜操免费视频 | 成人av免费在线播放 | 黄色激情视频网站 | 狠狠躁夜夜躁人人爽视频 | 欧美三级午夜理伦三级老人 | 阿v免费视频 | 99精品欧美一区二区蜜桃免费 | 久久对白| 亚洲v欧美v另类v综合v日韩v | 男女啪动最猛动态图 | 一区二区三区四区不卡 | 超碰1997 | 欧美天天搞 | 无罩大乳的熟妇正在播放 | 黄色免费看视频 | 黄色网址在线免费播放 | 国产高清一区二区 | 黄色中文字幕 | 国产精品黄色 | 麻豆网站免费看 | 在线国产不卡 | 欧洲亚洲精品 | 色播视频在线观看 | 欧美日韩国产在线播放 | 香蕉大人久久国产成人av | 强行挺进皇后紧窄湿润小说 | 久草手机在线观看 | 懂色tv| 国产传媒av在线 | 国产亚洲美女精品久久久2020 | 国产中文字幕精品 | 女人高潮潮呻吟喷水 | 天天爽夜夜爽一区二区三区 | 四虎影院黄色 | 免费黄色片子 |