7
votes

Quelles classes gérés dans .NET Framework attribue (ou utilisent) la mémoire non gérée?

existe-t-il un ensemble connu (documenté) de types .NET qui alloua la mémoire dans la partie non gérée de la mémoire de processus?

Par exemple, Microsoft Documents que l'infrastructure WPF a attribué une mémoire non gérée pour son modèle de rendu conservé afin d'optimiser les performances. Y a-t-il d'autres parties de telles parties de la framework .NET qui utilise de grandes quantités de mémoire non gérée?


0 commentaires

3 Réponses :


1
votes

Autant que je sache, il n'y a pas de document unique qui décrit ou identifie les classes dans le cadre utilise des ressources non gérées. La documentation MSDN pour la classe spécifique peut, mais cela vous obligerait à regarder des classes spécifiques.

Dans l'ensemble, c'est un pari sûr que nombre des classes utilisent un code non géré à un moment donné. Par exemple, de nombreux contrôles de formulaires Windows sont simplement des emballages autour des commandes Win32 afin de pouvoir utiliser des ressources non gérées.


0 commentaires

5
votes

S'il s'agit de Idisposable Il y a une très bonne chance qu'il possède des données non gérées, ou elle possède une classe gérée qui détient finalement des données non gérées. S'il a finaliser () , il est signe qu'il détient directement des données non gérées.

En règle générale, si elle implémente Idisposable , alors dispose () il dès que vous avez terminé.


2 commentaires

Corrigé à "Idisposable". En outre, la règle la plus fiable est si elle implémente un finaliseur, il possède presque certainement des données non gérées.


En effet - la plupart des Idisposables articles ne (directement) font quelque chose de non géré - mais ils chaîne à quelque chose de ce que pourrait . Par exemple, il existe un Idisposable dans les blocs d'itérateurs - mais rien n'a été non géré.



0
votes

Vous devez faire attention lorsque la classe implémente Idisposable. Cela indique généralement une utilisation des ressources non limitables, qui ne sont toutefois pas limitées à la mémoire, mais peuvent également être des termes de fichiers, des prises etc.

Un bon indicateur pour cela est lorsque la classe utilise un INTPTR .


0 commentaires