tagger tag windows swt handles

windows - tag - SWT No hay más manijas



tag folders (8)

Windows XP tiene el límite de 10000 usuarios para cada proceso y un total de 32000 para cada sesión de escritorio. Sin embargo, cuando ejecuto 4 o 5 procesos SWT, cada uno de los cuales no consume más de 2000 identificadores de usuario, siempre se lanzará la excepción SWT No More.

¿Alguien sabe por qué?


El límite no es de 10000 mangos. Las aplicaciones pueden usar más de 10000 manejadores (si la RAM lo permite). El límite está en GDI y recursos de usuario (elementos gráficos).

¿Qué tipo de recursos utilizan las aplicaciones SWT (puede ver esto con taskmgr)? Eso ayudaría a entender lo que se está escapando.



Es probable que tenga algún tipo de pérdida de recursos en su programa. Use la siguiente utilidad ( Sleak ) como una manera fácil de encontrar fugas de recursos. Lo utilicé para limpiar una gran cantidad de problemas en una aplicación rcp en la que estaba trabajando


Intente los siguientes pasos:

  • vaya al directorio de inicio de eclipse (donde instaló eclipse), luego vaya a la carpeta de complementos
  • elimine todos los complementos de instalación reciente que comienzan con com.google. *
  • intente reiniciar su eclipse nuevamente, puede comenzar a funcionar nuevamente (funcionó para mí).
  • Intenta instalar plugins antiguos de google o solo una vez que necesites. (Voy a intentar esto.)

Para que quede constancia, si esta fuera mi pregunta, habría aceptado la respuesta de @Paul. Sin embargo, hay un problema que me gustaría agregar aquí para ayudar a alguien más si se encuentra con este problema ...

Compruebe su uso de fuentes.

En mi caso, mis puntos de control no eran tan altos, pero en cambio estaba renovando las instancias de fuentes y entregándolas al estilo StyledText. En su lugar, tuve que declarar las fuentes que quería usar una vez, a nivel de clase. Esto me lo arregló.


Si te entiendo correctamente, probablemente obtengas la siguiente excepción:

org.eclipse.swt.SWTError: No more handles

Es posible que esté creando recursos (como Font , Image u objetos GC ) que no está eliminando correctamente. Es posible que desee tomarse un momento para leer la guía de SWT sobre Administración de los recursos del sistema operativo .

Para determinar si este es realmente el caso, puedo recomendar este útil artículo: Diagnóstico de fugas en las aplicaciones de Windows SWT / RCP , que explica qué son los recursos y sugiere usar Process Explorer o DPus para localizar fugas.

Un colega también recomienda encarecidamente Sleak , una aplicación enfocada en SWT que puede realmente informarle qué recursos quedan en la memoria residual.

Para una comprensión muy técnica de lo que hacen los manejadores de SWT, este artículo de Sybase describe que hay tres tipos: manejadores de Objeto de Usuario, Objeto de GDI o Objeto de Kernel, cada uno de los cuales tiene su propio máximo.


También he encontrado este problema, pero ahora lo he resuelto.

En mi caso, estoy ejecutando Win7 con SP1 y Spring Tool Suite 3.7.2 (Eclipse Mars 4.5.1) a través de Citrix XenApp. Este error ocurre cuando cambio entre Package Explorer y Java Editor .

Mi solución:
ejecute services.msc en Win7, encuentre "Tablet PC Input Service", deténgalo.

Espero que esto pueda ayudar a otros.


También he visto este error en eclipse 3.6 SR1, resultó ser causado por cientos de pestañas de editor que se dejaron abiertas. Cerrar las pestañas solucionó el error.