zoukankan      html  css  js  c++  java
  • 资源的释放

      我们在编写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();

       }

  • 相关阅读:
    Ubuntu 14.04 apt-get update失效解决(转)
    linux内核动态调试技术
    Ubuntu18.04开机挂载硬盘
    valgrind memcheck使用方法及效果(转)
    网络测试工具netperf(转)
    开发pc端项目可支持多个窗口登陆
    sql常用语句
    包装类和基础类的区别
    @param
    前台后台的顺序
  • 原文地址:https://www.cnblogs.com/huangcc/p/2475759.html
Copyright © 2011-2022 走看看