HowTo : Comment analyser et résoudre les problèmes de tas de bureau Windows |
||||||||||||
Lors de l'installation et du démarrage de plusieurs services sous Windows, vous pouvez rencontrer un problème où il n'est plus possible de démarrer des services supplémentaires. Chaque service alloue une certaine quantité de mémoire à partir de l'espace interne du tas de bureau utilisé pour stocker des éléments tels que les fenêtres, les polices, les éléments d'API, etc. Lorsque ce tas de bureau est épuisé, les appels système user32 commenceront à échouer. Malheureusement, il n'est actuellement pas possible d'interroger le système Windows pour connaître à l'avance la quantité d'espace de tas de bureau disponible. Lorsque le tas de bureau disponible pour le processus Wrapper est épuisé, vous rencontrerez très probablement l'une des erreurs suivantes :
Une description détaillée du tas de bureau interne se trouve sur le site externe. Si le service est lancé en tant que service non interactif, sur un système Windows XP 32 bits, l'espace de tas par défaut est de 512 Ko, mais cela varie considérablement selon la version spécifique de Windows que vous utilisez. Le Wrapper lui-même alloue entre 10 et 15 Ko pour chaque instance. Cependant, la JVM lancée alloue également au moins 20 Ko. La valeur exacte varie selon ce que fait l'application Java en cours d'exécution. Si l'espace de tas est épuisé pendant le chargement du processus Wrapper, vous obtiendrez le délai d'attente décrit ci-dessus. S'il est épuisé pendant le chargement de la JVM, vous verrez alors l'un des autres problèmes. Au moment de la rédaction de cet article, nous n'avons pas trouvé de moyen permettant au Wrapper d'interroger Windows sur la quantité de tas de bureau restante. Il est possible de surveiller et de diagnostiquer l'utilisation du tas de bureau à l'aide de l'outil « Desktop Heap Monitor » fourni par Microsoft. Cet outil fonctionne en s'exécutant comme un pilote de niveau noyau, ce qui nécessite un niveau d'accès que nous ne souhaitons pas imposer au Wrapper.
Veuillez lire les instructions sur le site Microsoft concernant l'utilisation de dheapmon.
Lorsque dheapmon.
Dans l'exemple ci-dessus, le Wrapper s'exécute en tant que service non interactif, sous l'utilisateur System, dans Service-0x0-3e7$\Default. Le démarrage de services non interactifs supplémentaires en tant qu'utilisateur System par défaut augmentera l'utilisation du tas de ce bureau en conséquence. L'exécution du service en tant que service interactif entraînera une augmentation de l'utilisation de l'espace de tas de WinSta0\Default. L'exécution du service sous un compte utilisateur donné créera une nouvelle session WinStation\Desktop pour chaque service individuel. Il existe actuellement 2 solutions de contournement :
Les versions 64 bits de Windows ont des tailles de tas de bureau par défaut beaucoup plus importantes, il est donc beaucoup moins probable que vous rencontriez des problèmes sur ces systèmes. |








