2010-02-24 5 views
3

Dans CLR 2.0, existe-t-il un moyen d'afficher toutes les chaînes qui ont été internées? J'ai regardé dans les API de profileur CLR et ne peux voir aucun appel d'API à surveiller quand une chaîne est internée. Aussi, quelle est la portée des chaînes internées? Les chaînes internées sont-elles collectées lorsque le domaine de l'application est déchargé ou s'étendent-ils sur les domaines d'application?Comment afficher les chaînes internalisées .NET

Répondre

4

Les chaînes sont internalisées par défaut dans .NET 2.0, mais les chaînes sont internées et quand elles peuvent être assez complexes. L'article suivant pourrait faire la lumière sur le concept:

http://community.bartdesmet.net/blogs/bart/archive/2006/09/27/4472.aspx

En outre, en ce qui concerne vos appels API ... assurez-vous que vous testez avec une version optimisée. Une version de débogage peut ne pas activer l'internalisation de chaîne par défaut, ce qui explique pourquoi vous ne le voyez pas.

+0

Thx pour la clarification. D'une manière ou d'une autre, il semble que je réussisse toujours à trouver ça sur celui-ci. : - | –

+0

Merci pour le lien, j'étais en mesure de trouver celui sur goog. Je travaille sur un processus ETL main roll qui manipule beaucoup de chaînes et nous voyons beaucoup de consommation de mémoire. Je spéculais qu'une API que j'utilisais faisait de l'enchaînement de chaînes dans les coulisses et cherchait quelque chose comme un compteur de perfmon ou une fenêtre de débogage VS où je pouvais voir les chaînes dans le "pool" interne ou surveiller le taux de croissance des chaînes internées . –

+0

Je ne crois pas qu'il y ait quelque chose qui puisse surveiller les chaînes internées. Vous pourriez être en mesure d'écrire quelque chose qui fait cela, mais ce serait probablement une perte de temps. Il y a quelques cas clés où les chaînes sont internées. Le plus souvent, il s'agit de données de chaîne constantes, soit des chaînes qui sont compilées dans votre assembly, soit des chaînes qui sont pratiquement statiques au moment de l'exécution. D'une manière générale, je ne plaisante pas avec la gestion interne automatique de .NET. – jrista

Questions connexes