• 资源的释放


      我们在编写java程序的时候创建了一些资源对象,当资源对象使用完后,往往会忘了释放资源。也许有人会认为不是有java的垃圾回收机制吗?干嘛还要我们自己手动释放资源对象呢?是有java的垃圾回收机制,但它只能回收java虚拟机中的对象,而对于本地操作系统的对象是不能够自动释放的,所以对于本地系统资源的释放要显示地释放掉。系统资源包括颜色、字体、图像、SWT中创建的各种控件等。在使用完系统资源后一定要释放掉,否则会严重地影响系统的整体性能。例如:

             Color color = new Color(display,255,0,0);

             color.display();

     而对于从底层平台获得的资源,我们不需要释放,例如:

             Color color = display.getSystemColor(SWT.COLOR_RED);

      为什么呢?因为这个资源不是我们创建的,我们只是引用它而已,也许还会有其他的对象也在使用该资源,如果释放掉了该资源会带来不可预知的严重后果。

    资源释放的原则:

    1.遵循“谁创建谁释放”的规则;

    2.释放了父控件也就释放了子控件。比如说窗口(shell)对象中有一个Composite容器,释放了shell时,该Composite也被隐式地释放了。该规则只适用于Widget的子类。如果程序中使用了系统资源(比如:颜色、字体等),仍需要在程序中显示地释放掉。

    3.释放了控件也就释放了控件所设置的菜单。

    SWT不允许访问已经释放了的控件,否则会抛异常“Widget is disposed”。我们可以使用控件对象的isDisposed()方法来判断控件是否已经被释放了。例如:

        if(!shell.isDisposed()){

            shell.dispose();

       }

  • 相关阅读:
    github使用及介绍
    git分支 & git标签
    nginx配置文件参考
    PHP优化
    Nginx优化
    Git安装及基础命令使用
    JavaScript框架设计-node节点
    论文爬取(一)
    JAVA日报
    JAVA日报
  • 原文地址:https://www.cnblogs.com/huangcc/p/2475759.html
Copyright © 2020-2023  润新知