【问题标题】:Are string resources (.resx) properties kept in memory?字符串资源 (.resx) 属性是否保存在内存中?
【发布时间】:2012-02-29 17:34:55
【问题描述】:

我有一个资源 (.resx) 文件,它目前有 58 个字符串属性。这个字符串属性的数量可以增长..

我的疑问是,这些字符串是否保存在内存中?如果我有 200 个,会全部保存在内存中吗? 或者字符串保存在文件中并且 ResourceManager 访问该文件?还是别的什么?这是如何工作的?

【问题讨论】:

    标签: .net resources resx


    【解决方案1】:

    通常,.resx 文件被编译成带有 resgen.exe 文件的 .resources,并作为程序集资源存储在程序集本身内。如果您查看 Visual Studio 项目中 ResX 文件的属性,您会看到生成操作是嵌入式资源,这就是导致它嵌入到程序集中的原因。因此,任何时候加载程序集时,您也将加载资源文件。可能还有另一种使用资源文件的方法,它不会将它们保存在内存中,但这是它们的正常使用方式。

    【讨论】:

    • 那(内存中的字符串)会产生内存开销吗?我必须担心很多字符串属性(关于内存开销)?
    • 200 个字符串对我来说听起来并不多。但是,如果您担心内存消耗,请在 Windows 任务管理器的“内存(私有工作集)”列中查看正在运行的进程。如果内存消耗不可接受,您将需要研究另一种加载字符串的机制,即不使用嵌入式资源字符串的机制。
    • 还请记住,现代操作系统具有虚拟内存,因此它们可以在内存不足时将内存页面交换到磁盘。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 2010-11-19
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多