Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

259
Vistas
¿Usar Spring boot con javafx consumirá mucha memoria?

Estoy dispuesto a usar la tecnología Spring Boot en mi aplicación JavaFX (para aprovechar su inyección de dependencia), pero me pregunto cuáles serán las consecuencias en la memoria, ya que saben que se cargará cualquier clase con una notación de "componente". al MetaSpace (ya que Spring Boot creará un objeto estático a partir de él), por lo que con decenas de controladores de vista JavaFx cargados en el MetaSpace, nunca se recolectará basura desde el inicio de la aplicación hasta el final, lo que obviamente es algo malo. , hay alguna forma de evitar este problema?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Escribes en comentarios:

Las aplicaciones JavaFX cuando el controlador de vista no obtiene basura recolectada significa que los objetos de vista siempre permanecerán allí TableViews,ListViews,Panes ... lo que puede ocupar un espacio importante

Pero no creo que tenga que ser así.

La instancia del controlador que hace referencia a los nodos de Java es solo un objeto de Java como cualquier otro y estará disponible para la recolección de basura cuando no haya más referencias a él en la JVM.

Supongamos que configura su integración JavaFX SpringBoot de esta manera:

  • Adición de Spring Dependency Injection en JavaFX (JPA Repo, Service)

Entonces configura su controlador de fábrica para usar Spring beans:

 fxmlLoader.setControllerFactory( springContext::getBean );

Entonces sus controladores son frijoles Spring cuyo alcance puede controlar.

Si usa el alcance del prototipo :

 @Bean @Scope("prototype") public PersonController personControllerPrototype() { return new PersonController(); }

Entonces el comportamiento es como se especifica en:

  • Con respecto al alcance y la recolección de basura en el contenedor Spring bean

Spring no gestiona el ciclo de vida completo de un bean prototipo: el contenedor instancia, configura y ensambla un objeto prototipo y se lo entrega al cliente, sin más registros de esa instancia prototipo.

Por lo general, creará un controlador y agregará una referencia al árbol de objetos que instancia en el gráfico de escena. Si reemplaza el árbol en el gráfico de escena cuando navega, y no mantiene una referencia al controlador en ninguna parte, entonces el controlador y cualquier otro nodo asociado que haya sido eliminado del gráfico de escena pueden ser recolectados como elementos no utilizados.

O bien, si quisiera simplemente cargar el fxml una vez y mantener el controlador para siempre, podría usar el alcance singleton para hacerlo.

Básicamente, puede elegir el alcance y el ciclo de vida de sus controladores para que se adapte mejor a su aplicación o a los controladores individuales que está utilizando.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda