大夢想家

          5年開發工程師,2年實施經理,X年售前顧問,......
          數據加載中……
          SWT---資源---第一!
               使用SWT做開發的朋友,一定要注意~資源是一個殺手!對于我們這些無知的開發人員,使用了資源,不釋放它,比不寫程序或者不提供這個功能還可怕~因為它經不起考驗,到了時間肯定完蛋!
               前兩個天就遇到了這個,同事寫了一個插件,一次性從數據庫中取得1W以上的數據然后組織成樹表格,顯示給客戶~取得數據的速度,樹組裝的速度,樹展開的速度,都做了反復的優化,一切優化完成以后,就宣布完成!但是沒有測,當我連續打開4個樹以后,程序就非掉了~
              我先加大rcp的啟動內存,沒用!瘋狂調用cg,沒用!而且這中錯誤錯的很奇怪,如果是內存異常,應該是JVM報出的,但是這次不是,仔細閱讀異常,竟然是SWT打開圖片,顏色,字體的時候的異常~肯定是資源問題了!
             因為以前一直再用Jface的treeviewer組件,所以一直沒有關心資源的問題~但是1W的數據,使用的SWT的原生Tree組裝的~而且還用了一些字體~
          排查代碼,竟然發現有字體被new出,但是沒有釋放~問題就出在這里~
             調用了

          Font font = new Font (display, "Courier", 10, SWT.NORMAL);

          那么就應該在不在需要這個Font的時候調用

          font.dispose();

          兩個原則:
          第一條是"誰占用,誰釋放",第二條是"父構件被銷毀,子構件也同時被銷毀"。

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

          posted on 2007-09-14 16:34 阿南 閱讀(1371) 評論(7)  編輯  收藏 所屬分類: 西安java用戶群Eclipse-SWT

          評論

          # re: SWT---資源---第一! 2007-09-14 21:50 千里冰封

          SWT再好應該也沒有SWING好吧,其實SWING的架構是非常優秀的。而SWT只是和AWT差不多而已
            回復  更多評論    

          # re: SWT---資源---第一! 2007-09-14 22:17 Matthew Chen

          看冰封說的,swt還是不錯的,老實說覺得用swt和用vb之類的差不多,簡單點,追求速度,用戶滿意度,但由于并非由jvm控制資源,很難獲得穩定性。swing的架構那是經典mvc,在配以jvm的呵護,自然是優秀的,簡直是媲美j2ee的架構啊。
            回復  更多評論    

          # re: SWT---資源---第一! 2007-09-14 22:33 BeanSoft

          呵呵 SWT 組件擴展比較費勁. 有誰能告訴我如何實現下面的功能:
          動態的將 CTabItem 隱藏/顯示... 似乎隱藏除了 dispose() 沒辦法了..

          我期望有方法 setVisible(boolean) 可以來調用.
            回復  更多評論    

          # re: SWT---資源---第一! 2007-09-15 00:30 ev0

          碰到系統資源的管理還是最好用jface里對應的registry
            回復  更多評論    

          # re: SWT---資源---第一! 2007-09-15 09:28 千里冰封

          呵呵,我還是覺得跨平臺的應用,還是SWING好一些,用JAVA的外觀,在每個平臺幾乎有一樣的表現
            回復  更多評論    

          # re: SWT---資源---第一! 2007-10-16 13:01 翔南

          恩 一定要及時釋放資源!
            回復  更多評論    

          # re: SWT---資源---第一! 2007-10-22 11:51 study

          哈哈,個人比如一下:寫代碼就好比人吃飯,如果上一餐吃得太多還沒有消化就接著來第二餐很容易消化不良.
            回復  更多評論    
          主站蜘蛛池模板: 九寨沟县| 廊坊市| 湖口县| 衡阳市| 大厂| 曲阳县| 和平县| 鹤山市| 屏南县| 南陵县| 晋城| 扎囊县| 宜章县| 巍山| 常德市| 安义县| 民勤县| 宁德市| 阿克苏市| 怀远县| 昌都县| 鹿泉市| 嘉鱼县| 云林县| 通辽市| 金门县| 沙坪坝区| 安顺市| 息烽县| 扎囊县| 沙湾县| 新和县| 疏附县| 白银市| 伽师县| 大方县| 建阳市| 滦南县| 博白县| 滨州市| 丰台区|