博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Eclipse rap 富客户端开发总结(12) :Rap 优化之组件的销毁
阅读量:6596 次
发布时间:2019-06-24

本文共 1004 字,大约阅读时间需要 3 分钟。

一、概述 

     经过几个月的rap 项目实战,总结了一些小经验,在这里总结一下,希望对大家有所帮助。 
二、销毁的处理 
      相信学习rap 的同学都知道,swt 中提供了许多的组件,像label、 button、 text等,这些组件在实际中的运用是非常广泛的,当然具体的用法在这里就不介绍了,主要是在我们实际应用过程中应该注意的地方,那就是用过后要记得销毁组件。 
       从我们项目中来说,在我们的项目中应用了大量的label 组件,并且会有频繁的增加和删除的功能。此时就会有大量的无用的label产生,如果不销毁这些label ,那将会占用一些空间资源信息。起初在做项目的时候没有考虑到这个问题,频频的产生内存溢出的现象, 从界面上并没有看到什么太大的数据量,后来发现,这些罪魁祸首原来是那些隐藏起来的没有用的label 岛的鬼。最后在逻辑中这样处理的,在该label 用完的时候,调用label 的dispose() 方法就可以了。但是大家要注意,一定要确保在label 不用了之后在dispose(),否则会引起组件失效的异常。 
三、特殊情况的处理 
      组件的dispose方法是销毁当前组件所暂用的资源,但是并不是你调用了dispose方法就可以销毁当前的组件,这个还和组件内对象关联有关系.再加上rap本身单线程的实现机制,有些对象是常驻内存的这样就造成了对象不能正常销毁的情况 
举个例子:大家在使用rcp/rap的时候肯定是要实现很多 composite对象,每个composite对象里面可以还要调用其他很多composite、资源、或者其他对象的引用,这个时候如果你调用当前对象的dispose()方法并不能销毁当前对象,因为对象里面的很多资源都是存在并且没有被销毁的,特别的在类的关系很复杂的情况下,销毁对象是更不可能的事情 
处理方式:实现composite对象的时候 一定要重写 dispose(),在此方法中一定要释放所有的资源,比如数据库资源,对象引用,要保证所有的引用都置空,这样能提高虚拟机回收速度. 
四、如何校验程序的对象是否正常释放 
      大家可以使用JProfile 分析一下内存来确定某个对象是否正常释放.JProfile同样可以把每个对象和对象的引用都展示在界面上,让你对内存问题一目了然. 

转载于:https://www.cnblogs.com/dengyungao/p/7503647.html

你可能感兴趣的文章
[置顶] jQuery乱谈(五)
查看>>
have sth done/doing的区别
查看>>
paste用法
查看>>
《java开发实战经典》读书笔记——第3章 Java基础程序设计之数据类型划分20151026...
查看>>
C. Tanya and Toys_模拟
查看>>
Swift 表达式
查看>>
iOS - iOS 适配
查看>>
JS实例(一)百度前端技术学院任务(十三)
查看>>
DEBUG(2)--函数的输入参数要做适当的检查
查看>>
1.python基础语法
查看>>
Kafka学习-Producer和Customer
查看>>
js适配器模式
查看>>
社会网络分析之”组成部分”、小圈子和聚类
查看>>
ORA-16019搭建DG设置归档线程参数报错
查看>>
xocde7下导入libsqlite3.tbd编译报错的解决办法
查看>>
100c之39:年龄问题
查看>>
吴忠军人民微博主页
查看>>
java 浅复制 深复制
查看>>
day09 函数
查看>>
Centos 6.5使用vsftpd配置FTP服务器教程
查看>>