控制线程C#中的内存量

Control amount of memory in a thread C#

是否可以控制方法中使用的内存量,如果达到特定数量会丢弃线程?

我有一个问题,偶尔会产生内存泄漏,如果发生泄漏,我想关闭线程。

这个问题是由第三方组件引起的,在他们修复它之前我想要一个解决方案。

简短回答:不。内存属于进程(通常)或在 .NET 中至少属于 AppDomain。 CPU时间属于线程。

长答案:

a) 有 ThreadLocalStorage, which was made for storing stuff that relates to a thread. In .NET it's ThreadLocal<T>。但是因为你不能修改这个库,所以它不会使用它。

b) 如果您实施自己的内存管理,您可能会检查分配了哪个线程内存。它 seems possible,但我不推荐它。这对于 C 和 C++ 更重要,您可以在 newmalloc() 上轻松使用 #define 来覆盖堆上的内存分配方式。

c) 如果您的库是本地库(或本地库的包装器),b) 也是无用的,因为内存分配将采用不同的方式。