2010-10-31 119 views
3

存儲靜態變量和方法。 堆或堆棧以及如何在不使用時釋放這些內存靜態存儲器管理

+0

你能否給我提供一點你想要完成的內容。 – 2010-10-31 07:57:26

回答

4

靜態變量存儲在堆上。我不確定你的方法是什麼意思,但是方法的局部變量存儲在堆棧中。

退出方法時釋放堆棧。當一個方法需要局部變量時,會分配更多的堆棧。當方法退出時,內存被釋放。

內存的其餘部分放在堆上,例如,與new運營商。一旦你釋放所有對象引用這個被釋放:

Car myCar = new Car(); 

// Use your car. 

myCar = null; 

// Somewhere between this point and when your application 
// exits, the memory will be released. 

這同樣適用於靜態的變量,但如果你想使他們有資格進行垃圾回收,必須專門設置這些來null

有關.NET內存管理的更多信息,Google搜索結果http://www.google.com/search?q=memory+management+.net+heap+stack提供了一些不錯的文章。

+0

所以假設我們有一個靜態密鑰工作方法b4它。所以我的意思是這種方法分配堆或堆棧中的內存,如果在一些靜態內存然後當我們不使用這種方法如何它的內存被釋放這個我想知道 – NoviceToDotNet 2010-10-31 07:54:35

+0

如何一個方法,我可以明確地設置爲GC – NoviceToDotNet 2010-10-31 07:55:03

+0

A靜態方法只是一種方法。該方法的局部變量只是在堆棧上。靜態方法本身不使用內存,只有參數和局部變量都在堆棧中。 – 2010-10-31 07:56:18

1

This article給出了一個很好的解釋:靜態變量存儲在.net的堆的特殊區域中。

+0

仍然那篇文章缺乏一些點我會列出所有後來什麼讓我非常困惑 – NoviceToDotNet 2010-10-31 08:17:04