大梦想家

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 阿南 阅读(1360) 评论(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

哈哈,个人比如一下:写代码就好比人吃饭,如果上一餐吃得太多还没有消化就接着来第二餐很容易消化不良.
  回复  更多评论    

只有注册用户登录后才能发表评论。


网站导航: