Java可以重用非处置系统GUI资源吗?

时间:2011-01-11 02:18:27

标签: java user-interface memory-management garbage-collection dispose

我正在尝试更多地了解AWT / Swing的dispose()类的Window函数及其功能。想象一下以下一系列事件:

  1. Window out X的实例A在超出范围后被垃圾收集。在垃圾回收之前,Dispose是 not
  2. 创建并显示X,B的新实例。
  3. 在使用GC之后,B是否会使用留下的非处置资源?

    此外,对于Window衍生Z,如果有很多Z实例,JRE是否能够重用它们之间的窗口资源?

1 个答案:

答案 0 :(得分:1)

这更多来自对记忆如何运作的一般理解,但是:

如果资源没有被处理掉,你就不能使用它们,因为它们仍然被占用。当资源没有被处理/垃圾收集/释放时,它们不可用,因为还有其他东西耗尽了那个内存。但是,一旦它超出范围,它实际上应该被处理掉。如果不是,则在JVM中会产生memory leak

对于第二部分,如果您指的是项目之间的内存块,则完全取决于是否有足够的空间。同样,我不是100%关于JVM如何管理内存,但是如果你需要两块内存而Z1Z2之间只有一个块,那么它就需要一个连续的空间在记忆中。