Java JVM退出时是否自动释放本机屏幕资源?

Java JVM退出时是否自动释放本机屏幕资源?,java,swing,jvm,Java,Swing,Jvm,如果从Swing应用程序执行System.exit(1),是否自动释放与图形相关的本机资源?如果我添加一个myFrame.dispose(),其中myFrame是唯一的 应用程序中的顶级容器,我是否可以确保不会在某些应用程序中看到恼人的行为 使用非java GUI的程序,当突然退出时,部分GUI状态会冻结在屏幕上?进程退出时,进程拥有的所有内容都会被释放,除非您谈论的是像Netware 3和4这样的病态操作系统。 顶级容器从未GC'ed,因为缺少方法finalize() 在此上下文中,JFram

如果从Swing应用程序执行
System.exit(1)
,是否自动释放与图形相关的本机资源?如果我添加一个
myFrame.dispose()
,其中
myFrame
是唯一的 应用程序中的顶级容器,我是否可以确保不会在某些应用程序中看到恼人的行为
使用非java GUI的程序,当突然退出时,部分GUI状态会冻结在屏幕上?

进程退出时,进程拥有的所有内容都会被释放,除非您谈论的是像Netware 3和4这样的病态操作系统。

  • 顶级容器从未GC'ed,因为缺少方法finalize()

  • 在此上下文中,
    JFrame.dispose()
    什么都不做,此容器仍存在于UsedMemory中,未更改,直到当前JVM实例退出

  • 您可以通过删除UsedMemory的内容来返回UsedMemory,注意从
    ContentPane
    中删除任何内容,否则
    (RootPane
    已删除)您的容器保持半透明,只有在
    工具栏
    边框
    可见的情况下

  • 所有窗口都是可访问和可重用的,您可以通过
    Window[]allWindows=Window.getWindows()来测试这一点贯穿整个应用程序生命周期

  • 重新使用
    isDisplayable()的测试容器之前

  • 一切都很重要

然后

1) 不要创建很多顶级容器

2) 重新使用已存在的容器

3) 只有丢失所有引用的
对象才能
GC'ed