2009-06-30 5 views
2

Je suis en train de tester une application qui lit des milliers de petits objets et les renvoie ensuite au client via l'accès distant. En utilisant ProcessExplorer de SysInternals, je vois que la mémoire ".NET CLR \% Time in GC" est supérieure à 50% en cas de forte charge..NET CLR Memory % Time dans GC

  • Cela signifie-t-il que 50% ou plus du temps est consacré au GC?

  • Si oui, comment puis-je améliorer les performances? Une réponse évidente est: ne pas créer autant d'objets mais, comment puis-je faire cela? Est-ce que les «structs» fonctionneraient mieux?

Merci

+0

Comment créez-vous ces objets? En créez-vous quelques-uns à la fois, encore et encore, ou créez-vous des milliers à la fois? –

Répondre

4

types sont mis AFAIK valeur sur la pile, les types de référence sont mis sur le tas. Une fois que vous êtes hors de portée, les types de valeurs de libération (c'est-à-dire les structures) sont beaucoup plus rapides que la libération d'objets sur le tas (ce sont des objets GC-ed).

A propos du temps% en GC, un coup d'oeil here

Hope this helps.

+0

Je vais lire attentivement l'article. – pablo