dispose方法的使用

Posted -桃之夭夭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dispose方法的使用相关的知识,希望对你有一定的参考价值。

java中的dispose()方法

从JAVA 1.5 的帮助文档的原文 - dispose - public void dispose()

    释放由此 Window、其子组件及其拥有的所有子组件所使用的所有本机屏幕资源。即这些 Component 的资源将被破坏,它们使用的所有内存都将返回到操作系统,并将它们标记为不可显示。 通过随后对 pack 或 show 的调用重新构造本机资源,可以再次显示 Window 及其子组件。重新创建的 Window 及其子组件的状态在移除 Window 的点上与这些对象的状态将是一样的(不考虑这些操作之间的其他更改)。

注:当 Java 虚拟机 (VM) 中最后的可显示窗口被移除后,虚拟机可能会终止。

    实际上就是说明了两层意思: 1.使用dispose()方法关闭窗体会释放该窗体的占用的部分资源,不过呢不是全部的,如上面说的,只是屏幕资源。2.使用dispose()方法关闭的窗体可以使用pack 或 show 方法恢复,并且可以恢复到dispose前的状态(呵呵~感觉好神奇的,一开始都不相信)

    关于上面的还有几点要说明的就是:1.如果dispose掉最后的窗体(程序启动就显示的那个),程序将终止。2.在JDK1.5中,show方法已经过时,被setVisible(boolean)方法代替,不过,使用dispose()和setVisible()方法,在表象上没有任何区别,它们的实质区别在于setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源。

 

    我的理解是dispose是 java.awt.Windows类的方法,它的作用是销毁程序中指定的图形界面资源,对数据资源不产生影响,所以当我们在SWing或是AWT中的图形界面组件时如果调用它,组建内的数据对象不会消失,只有在这些数据资源其他地方没有再使用后才会由垃圾回收机制处理掉。

以上是关于dispose方法的使用的主要内容,如果未能解决你的问题,请参考以下文章

Dispose() 用于清理托管资源?

析构函数、dispose 和 finalize 方法的区别

在 Flutter 中,方法 'dispose' 被调用为 null

更改“ReproClass”上的 Dispose 方法以在此字段上调用 ​​Dispose 或 Close

C# IDisposable 类,正确使用 Dispose,获取错误“dispose”需要 1 个参数

我需要 dispose() 在单元测试中吗? [复制]