AYUDAAAAA "Exception in thread "Thread-3" java.lang.InternalError"

Resulta que realice una aplicación en java bajo netbeans, esta aplic debe correr todos los dias a toda hora... ahora bien resulta que la aplicacion funciona bien pero al cabo de 6 u 8 horas de trabajo la aplic se traba y deja de fucionar toca cerrarla a las malas y volverla a abrir x otras horas mas cosa q no se desea el error que arroja el compilador es el siguiente:::::::

Exception in thread "Thread-3" java.lang.InternalError: El proceso actual ha utilizado el número máximo de manipuladores permitidos por el sistema para objetos del Administrador de Windows.

atsun.awt.windows.WToolkit.eventLoop(Native Method)
atsun.awt.windows.WToolkit.run(WToolkit.java:293)
atjava.lang.Thread.run(Thread.java:662)

La verdad no tengo ni idea de como solucionarlo x favor si me pueden ayudar se los agradeceria mucho..... además no soy muy diestro en estas cosas de java..

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Memoria

Me lleva a pensar que te estás terminando la memoria asignada a la JVM. Revisa el proceso que se crea cuando inicias la aplicación y verifica cuanta memoria esta usando, revísalo un tiempo después y verifica si el uso de memoria se incrementó. Si es el caso entonces hay un error de programación por ahí. ¿Puedes decirnos que hace la app?

Imagen de SILAS923

CONECTIVIDAD

Gracias x responder tan pronto, la app verifica la conectividad con ontros equipos de una red local x medio de simples ping o respuestas echo que hace java y dependiendo de la respuesta cambia iconos de color en la pantalla asi como tambien tiene señales sonoras si es el caso... entonces la app siempre esta haciendo "ping" a los equipos de la red y actualizando la interfaz bueno actualizando es redibujando la interfaz..... y lo de la memoria que usa no se como hacerlo y no se que error pueda tener..... gracias

Re: CONECTIVIDAD

Tal parece que o te acabaste la memoria o no estas cerrando los flujos, ¿éstas usando alguna clase de flujo (InputStream, OutputStream, etc.)?. Creo que deberías cerrarlas y darles "flush"...Para liberar esa memoria. Otra es ¿con qué frecuencia se hace la comparación?, este puede ser un punto a considerar, no es lo mismo llenar la memoria cada 300 milisegundos y vaciarla en lugar de hacerlo cada 2 segundos.

Puedes creo para esos fines también aumentar la memoria a utilizar, pero, no te marca un error de tipo "OutOfMemoryException"...Y así le pudieras asignar 2GB de memoria si sigues creando y creando objetos se te llenará en algún momento.

Si es posible sería bueno que pusieras una copia de tu código, bien identado y documentado. Seguro que más de uno te pudiera ayudar.

Saludos.

Imagen de SILAS923

CONECTIVIDAD

Gracias por responder os comento.... no uso input u outputstream aunque se tengo muchas variables y registros ...... la comparacion o revision la esta haciendo cada 5 segundos pero no se como pueda liberar la memoria como vos dices y lo de aumentar la memoria no funciono.... gracias

Revisa como se asignan los hilos

puedes usar la siguiente herramienta para verificar como se incrementa el uso de objetos en el heap

parece que es un problema de hilos probablemente en tu codigo estas creando hilos pero cuando estos terminan no los cierras correctamente, entonces al llamar nuevamente la funcion que los crea incrementa el numero y asi sucesivamente, entonces agotas los recursos de los manejadores, revisa si no ocurre un error al cerrarlos o probablemente nunca los estas cerrando y solo se crean.

Imagen de bferro

Utilitario Handle

Puedes usar este utilitario () para saber cuántos handlers de Windows tiene abierta tu aplicación a la vez. Los descriptores o handlers que un sistema operativopuede tener "abiertos" a la vez son finitos.