2009-08-05 4 views
2

Mes collègues et moi essayons de suivre un problème de mémoire dans une application, et dans mes recherches, j'ai trouvé un blog entry qui explique comment chaque thread obtient une pile de 1 Mo par défaut. Notre application arrive à créer beaucoup de threads, et donc nous avons écrit un programme de test rapide pour nous assurer que nous avons compris exactement ce qui se passait. L'application de test (C#) va juste et crée 300 threads, mais le gestionnaire des tâches n'affichait que 22 Mo de mémoire. Est-ce que la mémoire de pile n'est pas comptée par le Gestionnaire des tâches ou est-ce que quelque chose d'autre se passe? Le gestionnaire de tâches n'est pas le meilleur outil pour la détermination de la consommation de mémoire.La pile d'un thread est-elle indiquée comme mémoire utilisée dans le Gestionnaire des tâches?

Répondre

1

Au lieu de cela, téléchargez l'essai gratuit d'un outil comme MemProfiler ou RedGate's Memory Profiler

N'utilisez pas la colonne d'utilisation de mem dans le Gestionnaire des tâches pour le diagnostic ou le profilage. Utilisez les compteurs Perfmon, en particulier les octets privés et les compteurs .NET spécifiques qui révéleront des problèmes tels que les fuites de mémoire.

pourrait également intéresser: Memory Usage Auditing For .NET Applications

+0

Oui Je sais que cela - il est l'une des choses sur la mémoire .NET la plus surestimée. Cependant, cela ne répond pas du tout à ma question. La question est simplement - Stack Memory est-il signalé comme "mémoire en cours d'utilisation" par le Gestionnaire des tâches? –

+0

Le "Gestionnaire des tâches" est une application de l'équipe de publicité MicroSoft pour prouver que "Windows n'est pas lent, vous devez imaginer des choses";) –

+0

@Michael Bray: votre question est discutable. Utilisez un meilleur outil pour la tâche à accomplir. –

Questions connexes