剛剛遇到this website。功能9是內存管理,他們聲稱他們的產品「自動釋放[不再需要]的內存」。SmartAssembly內存管理
這是一個營銷策略,還是你認爲他們有一些招數?他們只是基於他們的.Net運行時提供的任何情況下(或他們是gasp調用GC.Collect())?
對產品沒有真正的興趣,DotFuscator對我來說就足夠了 - 我只是真的對如何實現這一點感興趣。
剛剛遇到this website。功能9是內存管理,他們聲稱他們的產品「自動釋放[不再需要]的內存」。SmartAssembly內存管理
這是一個營銷策略,還是你認爲他們有一些招數?他們只是基於他們的.Net運行時提供的任何情況下(或他們是gasp調用GC.Collect())?
對產品沒有真正的興趣,DotFuscator對我來說就足夠了 - 我只是真的對如何實現這一點感興趣。
有趣。
一個review from 2007包含此:
{} smartassembly使用幾個不同的 技術,以降低內存 使用。
我們問的 {} smartassembly對一些具體 的開發人員,他們告訴我們,由 默認的CLR保留一噸的 內存.NET程序集 - 無論是 與否,他們提出要求。所以 {smartassembly}智能地檢測 當CPU處於空閒(或者左右) 和增加或減少保留的存儲器的量 用於根據其要求的組件 - 在某種意義上 「自動化的」 GC,所不同的是 存儲器可能會或可能不會使用 。
在此同樣,{} smartassembly (與字面不必 訪問源代碼感謝好處.NET的設計方式)標誌着沒有任何 檢測的任何 和所有類「子」繼承從他們 爲類「密封」,從而減少 的內存和CPU在運行時使用 的CLR確定 哪些職能應當 提供給其他類和 庫量。
同一個評論有一個「之前/之後」的屏幕截圖,顯示的應用程序從8M到420K。這表明它實際上只是減少了應用程序的工作集,而不是真正的內存需求。如果您最小化應用程序,則會出現相同的「優化」。它不會突然佔用更少的內存。我不相信桌面.NET框架真的只能運行420K。
自動密封功能很有趣 - 我看不出它對虛擬方法的查找有幫助。我懷疑這種影響是否真的很重要,但我當然沒有把它作爲基準。
所以,沒有定論,但我懷疑它正在做我特別想要的任何事情。
我可能是錯的,但在我看來,SmartAssembly將數據推送到頁面文件。如果在任務管理器中選擇了Commitize和PF Delta列,您將看到雖然WorkingSet減小了大小,但提交大小保持不變。如果您嘗試訪問應用程序中的某些內容,則會看到很多頁面錯誤。
如果這是「內存優化」的行爲,那麼我認爲該名稱不適合該功能,因爲訪問頁面文件的成本可能會顯着降低性能,所以應簡單地稱爲「解除優化」。
我對這個解釋有錯嗎?
謝謝喬恩。正是我在找什麼。 – 2008-12-04 09:07:47