Я понимаю, что потоки .net довольно тяжелые, потребляя ~ 1 МБ памяти каждый (в основном для стека). Теперь, если это был пользовательский класс .net, я знаю, что он, скорее всего, поместит большую часть памяти в LOH. Однако, поскольку это основной класс, мне интересно, что такое поведение.Как память управляется для потока?
Причина этого вопроса заключается в том, что в настоящее время я занимаюсь профилированием памяти (потенциально долговечным) приложением, и, похоже, происходит медленная утечка. Я заметил, что VS показывает 33 потока (в разных состояниях, включая остановленные). Мне интересно, может ли экономное использование потоков быть фрагментацией памяти (наряду с несколькими LOH DTO).
Как вы профилируете? Какой инструмент вы используете? Это похоже на догадки ... догадки - это не способ отладки утечки памяти. Если у вас есть профилировщик, профиль с ним - не должно быть никакой двусмысленности относительно того, откуда вытекает утечка (если она вообще существует). –
@J ... Я знаю. Это догадки, поэтому я прошу предоставить дополнительную информацию. Я не сказал, что я ИДЕНТИФИЦИРОВАЛ ИСТОЧНИК как нить, я прошу МОЖЕТ БЫТЬ ПОТОМУ ЧТОБЫ РЕЗЬБЫ. Что касается профилирования, я использую ANTS 7. Что не дает мне ЛЮБОЙ информации об использовании памяти в потоках. – Aron
Несомненно. Удержание экземпляра должно показать вам все, что коренится. Используете ли вы собственный код (внешние библиотеки DLL и т. Д.?). Это C# или VB.NET или что-то еще? –