簡體   English   中英

嘗試在我的Java Swing代碼中發現內存泄漏

[英]Trying to find memory leak in my java swing code

我有一個相當大的Java應用程序,它創建描述圖紙的復雜數據結構,從原始的帶時間戳的數據點開始顯示圖紙,對其進行分析等。

當我嘗試處理一系列這些繪圖時,我顯然以用於保存繪圖的JScrollPane形式掛在內存上,但我不知道為什么。 每個裝入的新文件都會重新分配保存滾動窗格的變量,但我注意到,擺動的RepaintManager會在其invalidComponents列表中維護以前顯示的窗格的列表。 然后,這似乎掛在每個圖形的存儲上,不久以后,當我串行處理文件時,我已經有了1GB的內存,因此使用的圖形內存永遠不會超過一個。

我遇到了內存轉儲,並使用Eclipse內存分析器和YourKit進行了分析。

我認為這是Eclipse的內存分析器顯示的煙槍:

在此處輸入圖片說明

花了很長時間嘗試深入研究此問題。 對於任何有關我的錯誤可能出在哪里或如何解決問題的建議,我將不勝感激。

我意識到如果不深入研究代碼就很難說出來,但是,即使對於有關查找位置的任何常規建議/注意事項,也很棒。

正如@MadProgrammer 建議的那樣 ,您當前的代碼大概會替換現有的JScrollPane實例:

scrollPane = new JScrollPane(view);

而是通過setViewportView()更新視口組件:

scrollPane. setViewportView(view);

更好的是,直接更新view的內容。 詳細信息將取決於您的實現,但是validate()repaint()表示一種方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM