Контрольный объем памяти в потоке C# - PullRequest
1 голос
/ 10 июля 2020

Можно ли контролировать объем памяти, который будет использоваться в методе, если при достижении указанного c количества поток отбрасывается?

У меня проблема, которая иногда вызывает утечку памяти, и если происходит утечка. Я хочу остановить поток.

Эта проблема возникает из-за стороннего компонента, пока они не исправят ее. Я хотел найти решение.

1 Ответ

4 голосов
/ 10 июля 2020

Краткий ответ: Нет. Память принадлежит процессу (в общем) или в. NET по крайней мере AppDomain. Процессорное время принадлежит потокам.

Длинные ответы:

a) Существует ThreadLocalStorage , который был создан для хранения информации, относящейся к потоку. В. NET это ThreadLocal<T>. Но поскольку вы не можете изменять библиотеку, она не будет использоваться.

b) Если вы реализуете собственное управление памятью, вы потенциально можете проверить, для какого потока выделена память. Это кажется возможным , но я бы не рекомендовал это. Это больше подходит для C и C ++, где вы можете легко использовать #define для new и malloc(), чтобы переопределить способ выделения памяти в куче.

c), если ваш library - это собственная библиотека (или оболочка для собственной библиотеки), также b) бесполезна, поскольку распределение памяти будет происходить другим способом.

...