2010-10-03 18 views
2

Nous avons l'application .NET (en fait une application IronPython). Nous avons remarqué que les heures supplémentaires l'application devient plus gros dans la mémoire et paresseux. En utilisant WINDBG (! Eeheap -loader), nous avons remarqué que le LoaderHeap devient plus grand (150 Mo d'augmentation par jour). De la sortie! Eeheap, il semble que l'augmentation est due à HostCodeHeap (objets?). J'aimerais savoir quels sont ces objets et pourquoi je peux les empêcher de grandir jusqu'à l'infini.Qu'est-ce que HostCodeHeap et pourquoi fuient-ils?

Merci!

Répondre

0

Ce sont probablement des objets créés pour du code émis dynamiquement. Plusieurs composants dans le framework le font, et il se peut que IronPython en utilise un seul.

J'avais entendu parler de problèmes similaires pendant using Linq-TO-SQL, la sérialisation XML, les transformations XSLT compilées et d'autres codes générés dynamiquement. Voir aussi "Fuite de mémoire de tas non gérée" près de la figure 2 dans cette section MSDN magazine article.

+0

Merci. Une idée de comment je peux apprendre quelque chose sur ces objets en utilisant windbg? –

+0

Malheureusement, non, je n'ai pas beaucoup d'expérience avec WINDBG donc je ne sais pas comment les retrouver. Mais peut-être que quelqu'un de la communauté IronPython pourrait vous aider; vous pouvez rencontrer quelque chose comme http://ironpython.codeplex.com/workitem/20399 ou http://ironpython.codeplex.com/workitem/24687 – Lucero