zoukankan      html  css  js  c++  java
  • Eclipse rap 富客户端开发总结(12) :Rap 优化之组件的销毁

    一、概述 
         经过几个月的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同样可以把每个对象和对象的引用都展示在界面上,让你对内存问题一目了然. 

  • 相关阅读:
    开源跳板机(堡垒机)系统 Jumpserver安装教程(带图文)
    运维自动化管理服务器 CheungSSH
    代码托管服务平台GitHub
    Java 博客系统 Tale
    基于代码生成器的快速开发平台 JEECG
    中文企业云操作系统 CecOS
    Python基础学习(一)之Python的概述与环境安装
    Python3.x安装教程及环境变量配置
    PHP Primary script unknown 终极解决方法
    正则表达式备忘录-Regular Expressions Cheatsheet中文版
  • 原文地址:https://www.cnblogs.com/dengyungao/p/7503647.html
Copyright © 2011-2022 走看看