大夢想家

          5年開發工程師,2年實施經理,X年售前顧問,......
          數據加載中……
          尋求從事過Java桌面的應用的朋友解惑~
                 最近在公司從事一個通用的數據查詢平臺的開發,是一個基于Eclipse-RCP的應用,項目現在基本進入改進和修正BUG階段。
              但是現在碰到了令人頭疼的問題,程序在測試人員的機器上跑上半個多小時,整個應用程序的內存會占到300m以上,如果是做頻繁的大數據查詢,內存漲的更快。
              我加了每分鐘調用一次System.gc()的線程,唯一的改觀是在Eclipse下面的內存進度顯示上,會出現小范圍的減少,但是從任務管理器中檢視應用程序的內存,還是居高不下~
                 Java本身吃內存,我能理解,Eclipse-RCP也會加載大量的東西,我也能理解,大數據量的加載更可怕,我更能理解,但是無論怎么調用System.gc()都沒有什么反應,我就不能理解了~
                希望做過這方面的研究或者應用的朋友幫忙解答,或者談談經驗~也可以幫助我做一些改善~

          客戶虐我千百遍,我待客戶如初戀!

          posted on 2007-10-21 11:24 阿南 閱讀(1167) 評論(9)  編輯  收藏 所屬分類: Eclipse-RCP

          評論

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 12:00 zhrb

          System.gc()只是告訴GC,要收集垃圾了,但是GC并不一定會按照其要求執行垃圾收集的。事實上GC線程是一個優先級別低的線程,如果你的CPU總是處于繁忙狀態的話GC未必能運行。
          緩慢的話,可能有兩個原因:
          1.程序寫得不好,造成內存泄露。(沒錯,Java程序如果寫得不好也會造成內存泄露的)
          2.程序的架構可能有問題,可以采用一些緩存之類的技術。

          我也沒有實際經驗,你可以去newsmth.org的Java版上去咨詢一下,那邊高手多。最好詳細貼出你的問題,采用什么結構、技術、硬件資源、癥狀是什么。
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 12:10 千里冰封

          應該是你代碼的問題 ,很多對象都有引用指向它,你gc多少次也是沒有用的。
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 12:33 javazhai

          swt的圖片,字體等重型組件都是要特殊處理的,不然你的內在肯定是會漲暴的,調用gc是沒有用的。。。
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 12:56 BeanSoft

          是的 這也是 SWT 本身設計的一個弊病 自己釋放吧 所有資源都要釋放... 好像 JFace 有 ResourceManager 類.
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 13:08 BeanSoft

          對了, 呵呵, 這時候你就得用 JProfiler 這樣的工具來分析了, 可以看我做過的視頻:
          用 JProfiler4 調優 Weblogic 和 Tomcat 的視頻(原創)
          http://www.aygfsteel.com/beansoft/archive/2006/11/27/83767.html
          如果對象是 SWT 的多, 那你得考慮改進 SWT 的資源管理; 否則就是別處的代碼的 bug 了.
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 13:10 plankton13

          估計你的代碼問題,強制調用GC() ,會占用所有的線程資源, 效率不是很高。

          建議還是先看看代碼,然后確定問題。

            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-21 16:22 mingj

          @javazhai
          同意
          嗯,我以前也看過這樣的文章
          字體占了太多的資源
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~[未登錄] 2007-10-22 09:45 wzjin

          試用swing看看,有時候采用非java代碼內存回收很困難的。另外,你從數據庫中讀出的數據在不用的時候盡量要及時賦值為null,不要等它生命周期完,這塊其實是最占用內存的,你項目估計也是這問題。估計你修改以后再用JProfiler分析對比,很容易發現這點。
            回復  更多評論    

          # re: 尋求從事過Java桌面的應用的朋友解惑~ 2007-10-23 08:49 wing5jface

          同意字體,繪圖沒有釋放這一觀點.
          曾經的項目中的收銀模塊上線運行一年多沒有碰過這樣的問題.
          最近有2個RCP程序在VIA 800(低于賽揚666),256M環境裝了VNC等軟件在內18小時運行都順暢的.
            回復  更多評論    
          主站蜘蛛池模板: 东乡| 瓦房店市| 金溪县| 华阴市| 宿州市| 克什克腾旗| 华池县| 勃利县| 蒲江县| 梓潼县| 防城港市| 岑巩县| 施秉县| 始兴县| 蒙城县| 平潭县| 兴隆县| 喀喇| 鹤壁市| 福清市| 兴海县| 株洲县| 慈溪市| 景泰县| 仁布县| 岳阳县| 大石桥市| 彝良县| 双辽市| 宣恩县| 定西市| 东丽区| 五莲县| 巴青县| 怀柔区| 阿克陶县| 威宁| 博野县| 伽师县| 汽车| 页游|