Tengo una pregunta sobre los hilos que genera mi aplicación durante la ejecución y sobre su estado.¿Deberían ejecutarse todos estos subprocesos predeterminados? Y mantienen mi JVM con vida?
Tengo una aplicación Swing y noté un par de comportamientos extraños en algunos escenarios de prueba, usando Java VisualVM. Ejecutando mi programa durante más de 30 minutos sin hacer nada (solo comencé y lo dejé allí), noté lo siguiente.
Antes que nada, en la pestaña de Subprocesos veo muchos hilos vivos.
lectura (entre otras cosas) Default threads like, DestroyJavaVM, Reference Handler, Signal Dispatcher y What are these threads which are spwaned when a Java application begins its execution? entiendo la mayoría de estos hilos tienen una muy buena razón para estar allí. (Todavía estoy tratando de averiguar los "RMI TCP")
Tengo dudas, sin embargo, sobre su estado. ¿Es normal que los primeros seis de ellos hayan estado en funcionamiento el 100% del tiempo?
Además, ¿podría alguno de estos subprocesos explicar un consumo de montón como el siguiente?
me di cuenta de que una gran cantidad de casos de HashMap $ Entrada y TreeMap $ de entrada están referenciados y creado por las bibliotecas procedentes de sun.rmi. * Y pensé que podría estar relacionado con los temas "RMI TCP" ..
Por último, pero no por eso menos importante, si intento deshacerme de() mi JFrame principal, el cuadro desaparecerá, pero la aplicación seguirá ejecutándose ... ¿podrían ser esos hilos la razón (o parte de ella)? ??
Gracias a todos.
+1 por la respuesta bien organizado! Acerca de JFrame, sé que podría usar EXIT_ON_CLOSE pero la aplicación podría ser llamada por un framework más grande y, si solo uso EXIT_ON_CLOSE, mataría a toda la instancia de JVM. dispose() en el último cuadro desplegable debe matar la aplicación de todos modos, ¿verdad? – mdm
@mdm: no soy un experto de Swing, pero estoy citando ['Window.dispose()'] (http://docs.oracle.com/javase/7/docs/api/java/awt/Window.html#dispose()): * Nota: Cuando se elimina la última ventana visualizable dentro de la máquina virtual Java (VM), la VM puede finalizar.* –
El consejo en esta respuesta es excelente, pero no voy a mentir: voté +1 puramente porque usaste TL; DR ;-) –