0

我知道.net線程相當重,每個內存消耗大約1MB內存(主要用於堆棧)。現在,如果這是一個用戶.net類,我知道它可能會把大部分內存放入LOH。但是,由於它是一個核心課程,我想知道這是什麼行爲。內存如何管理一個線程?

這個問題的原因是因爲我在內存分析一個(可能長壽命)的應用程序,並且似乎有一個緩慢的泄漏。我注意到VS顯示了33個線程(在各種狀態下,包括停止)。我想知道線程的節約使用是否會碎片化內存(以及一些LOH DTO)。

+0

你怎麼樣分析?你使用什麼工具?這聽起來像猜測......猜測是無法調試內存泄漏。如果你有一個配置文件,那麼配置文件 - 關於漏洞來自哪裏(如果它存在的話)應該沒有歧義。 –

+0

@J ...我知道。這是猜測,因此我要求提供更多信息。我並沒有說我確定源是線程,我所要求的可能是因爲線程。至於性能分析,我正在使用ANTS 7.哪個不給我任何有關線程內存使用情況的信息。 – Aron

+0

當然是的。實例保留應該顯示任何根植的東西。你是否使用任何本地代碼(外部DLL等?)。這是C#還是VB.NET或其他東西? –

回答

2

線程的堆棧未存儲在LOH中,因爲該堆棧不是CLR對象。當.NET要求一個新的線程時,線程的堆棧由操作系統分配。

CLR線程是圍繞操作系統線程的薄包裝器。

如果你真的有內存泄漏,你可以確定它不在線程對象本身。