6

Estoy tratando de entender más acerca de la función dispose() de la clase Window de AWT/Swing y de lo que hace. Imagine la siguiente serie de eventos:¿Puede Java reutilizar los recursos de la GUI del sistema no eliminados?

  1. Una instancia A de una derivada de ventana X se recoge basura después de salir del alcance. Desechar es no llamado antes de la recolección de basura.
  2. Se crea y se muestra una nueva instancia de X, B.

¿Utiliza B los recursos no eliminados que quedaron después de que A fuera GC'd?

Además, para una derivada de ventana Z, si hay muchas instancias de Z, ¿el JRE puede reutilizar los recursos de ventana entre ellos?

Respuesta

1

Esto es más de una comprensión general de cómo funciona la memoria, sino:

Si los recursos no han sido eliminados, que no se pueden utilizar debido a que todavía están siendo absorbidos. Cuando los recursos no se eliminan/recogen/liberan basura, no se pueden usar porque hay algo más que consume esa memoria. Sin embargo, una vez que salga del alcance, de hecho debería ser eliminado. Si no lo es, entonces eso es un pero en la JVM que daría como resultado un memory leak.

Para la segunda parte, si se refiere a bloques de memoria entre elementos, todo depende de si hay suficiente espacio o no. De nuevo, no estoy al 100% sobre cómo la JVM administra la memoria, pero si necesita dos bloques de memoria y solo hay un bloque entre Z1 y Z2, entonces no, necesitaría un espacio contiguo en la memoria.

Cuestiones relacionadas