2008-10-06 34 views
11

我原以爲這將清楚地表明託管代碼中的內存分配速度是否比本地代碼快 - but there seems to be some controversy。也許虛擬機器下的內存管理會更快,因爲沒有上下文交換OS的調用,但是後來我發現虛擬機本身需要定期調用操作系統以獲得更多的內存,並且存儲器自身具有管理開銷而不是操作系統。託管代碼中的.NET內存管理速度是否比本地代碼更快?

請不要提供像我這樣未經證實的斷言,請提供支持您的立場的參考鏈接。

回答

6

http://msdn.microsoft.com/en-us/library/ms973852.aspx

讀它會進入一些細節如何在.NET內存分配工作和簡單地將其與C++模型進行比較。

總之,.NET中的內存分配涉及到抓取當前堆棧點作爲對象的地址並將對象的數據大小添加到堆棧指針。通過比較,C++必須搜索已釋放指針的列表,以查找足夠大的堆區域。因此在大多數情況下,.NET會更快。

+0

這不會導致不斷增長的堆棧嗎?和堆棧碎片? – Josh 2008-10-06 10:17:51