2012-02-29 94 views
4

我有一個資源(.resx)文件,它目前有58個字符串屬性。這種字符串屬性的數量可以增長..字符串資源(.resx)屬性保存在內存中嗎?

我的疑問是,這些字符串保存在內存中?如果我有200個,是否都會留在記憶中? 或者字符串保存在文件中並且ResourceManager訪問該文件?還是其他什麼?這是如何工作的?

回答

2

通常,.resx文件會被編譯到帶有resgen.exe文件的.resources文件中,並作爲程序集資源存儲在程序集本身中。如果您查看Visual Studio項目中的ResX文件的屬性,您會看到Build Action是嵌入式資源,這是導致它嵌入到程序集中的原因。因此,無論何時加載程序集,都會加載資源文件。可能有另一種方法來使用資源文件,它們不會將它們保存在內存中,但這是它們使用的正常方式。

+0

那(內存中的字符串)可能會產生內存開銷?有很多字符串屬性,我不得不擔心(關於內存開銷)? – 2012-02-29 18:08:48

+0

200根琴絃對我來說聽起來不是很多。但是,如果您擔心內存消耗,請在Windows任務管理器的內存(專用工作集)列中查看該進程在運行時的情況。如果內存消耗不可接受,則需要查看另一種加載字符串的機制,即不使用嵌入式資源字符串的機制。 – luksan 2012-02-29 18:57:34

+0

另外請記住,現代操作系統具有虛擬內存,因此當內存不足時它們可以將內存頁交換到磁盤。 – luksan 2012-02-29 18:59:30

相關問題