我想限制 C# 中的執行緒可以分配多少 RAM,以便超出此限制的分配將失敗/崩潰或執行緒將終止。
例如,假設我在 C# 中有 3 個托管執行緒,執行緒 A、B 和 C。我想限制所有三個執行緒使用的 RAM 不超過 100 MB。如果他們這樣做了,那么我希望他們在不影響其他執行緒的情況下崩潰。
現在在我看來,由于 C# 是一種基于虛擬機的語言,并且使用垃圾收集器,因此理論上這實際上應該是可行的,而無需嘗試使用限制行程 RAM 使用的作業系統功能。
怎樣才能實作這樣的目標?任何指導將不勝感激。
uj5u.com熱心網友回復:
您不能限制一個執行緒或一組執行緒使用的 RAM,因為執行緒擁有的唯一 RAM 是它的堆疊(大約1MB記憶體)。在堆中分配的記憶體由程式的所有執行緒共享。它不屬于任何執行緒或執行緒組。C# 語言或 .NET 運行時中沒有任何規定可以防止特定執行緒與堆中分配的物件進行互動。如果要限制可用于操作的 RAM 量,則必須將此操作隔離在單獨的行程中,而不是單獨的執行緒中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/520373.html
標籤:C#多线程垃圾收集内存
上一篇:如何正確實作生產者消費者問題
下一篇:在C中使用信號量進行數學運算
