2009-11-19 214 views
1

我們有一個用C#編寫的針對AnyCPU的Windows服務應用程序。它運行在Win2003(32位)服務器上。最近它開始耗盡內存。將應用從32位移動到64位

將此服務重新部署到Win2003(64位)盒中涉及什麼。我是否需要重新編譯它,如果我不重新編譯它,應用程序是否會獲得更多內存?

回答

3

如果將exe設置爲AnyCPU,64位CLR將默認加載到64位機器上,這並沒有什麼特別之處。你只需要確保你是真正的AnyCPU就緒(沒有不安全或安全的32位指針數學假設等)。如果您運行的是沒有PInvokes的所有託管代碼,則應該保持良好狀態。

+4

真正的問題是:你是否內存不足,因爲該應用程序有點缺陷,或僅僅因爲你真的需要那麼多的內存?如果你泄漏,移動到64位只是延長了不可避免的。 – nitzmahone 2009-11-19 22:58:17

+0

這是一個字母打印應用程序。每個模板都是一個將數據xml轉換爲wordml文件的XSL。大小約爲每個模板300k。最近模板的數量幾乎增加了一倍。我們會更好地將他們留在記憶中,但我需要一個排序術語解決方案 – mfeingold 2009-11-19 23:15:06