第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何查找Java內(nèi)存泄漏

如何查找Java內(nèi)存泄漏

冉冉說 2019-07-02 16:03:27
如何查找Java內(nèi)存泄漏如何在Java中發(fā)現(xiàn)內(nèi)存泄漏(例如,使用Jhat)?我試著在Jhat中加載堆轉(zhuǎn)儲,以了解基本情況。但是,我不明白如何才能找到根引用(參考文獻)或者不管它叫什么。基本上,我可以看出哈希表條目有幾百兆字節(jié)([java.util.HashMap$Entry或類似的東西]),但是地圖在整個地方都使用.有沒有什么方法可以搜索大型地圖,或者可能找到大型對象樹的一般根?[編輯]好吧,到目前為止,我已經(jīng)讀過答案了,但我只能說我是個卑鄙的混蛋(這意味著我更感興趣的是學(xué)習(xí)如何使用Jhat而不是支付JProfiler的費用)。而且,Jhat總是可用的,因為它是JDK的一部分。當然,除非Jhat沒有辦法,只能用蠻力,但我不敢相信情況會是這樣。此外,我認為我無法實際修改(添加全并運行足夠長的時間讓我注意到泄漏。
查看完整描述

3 回答

?
MM們

TA貢獻1886條經(jīng)驗 獲得超2個贊

我使用以下方法查找Java中的內(nèi)存泄漏。我已經(jīng)成功地使用了jProfiler,但我相信任何具有繪圖功能的專門工具(差異更容易以圖形形式進行分析)都會工作。

  1. 啟動應(yīng)用程序,直到它達到“穩(wěn)定”狀態(tài),這時所有初始化都完成了,應(yīng)用程序處于空閑狀態(tài)。
  2. 多次運行懷疑產(chǎn)生內(nèi)存泄漏的操作,以允許發(fā)生任何與緩存、DB相關(guān)的初始化。
  3. 運行GC并獲取內(nèi)存快照。
  4. 再做一次手術(shù)。根據(jù)操作的復(fù)雜性和所處理數(shù)據(jù)的大小,操作可能需要運行幾次至多次。
  5. 運行GC并獲取內(nèi)存快照。
  6. 對兩個快照運行一個diff并進行分析。

基本上,分析應(yīng)該從最大的正面差異開始,比如,對象類型,并找出是什么導(dǎo)致這些額外的對象留在內(nèi)存中。

對于在多個線程中處理請求的Web應(yīng)用程序,分析變得更加復(fù)雜,但是仍然適用一般的方法。

我做了很多項目,特別是為了減少應(yīng)用程序的內(nèi)存占用,這種通用的方法,通過一些特定于應(yīng)用程序的調(diào)整和技巧,總是工作得很好。


查看完整回答
反對 回復(fù) 2019-07-02
  • 3 回答
  • 0 關(guān)注
  • 735 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號