【发布时间】:2010-05-16 14:15:16
【问题描述】:
GAC 是内存区还是硬盘区 (C:\windows\Microsoft.NET\Assembly\...)
我对 GAC 中的缓存一词感到困惑?
【问题讨论】:
GAC 是内存区还是硬盘区 (C:\windows\Microsoft.NET\Assembly\...)
我对 GAC 中的缓存一词感到困惑?
【问题讨论】:
GAC 是一个文件夹:
C:\Windows\Microsoft.NET\程序集
存储在该文件夹下的文件夹中的程序集位于 GAC 中。您可以通过签名将程序集添加到 GAC,然后使用 gacutil 添加它们。 GAC 是托管程序集查找任何外部引用的位置之一。
【讨论】:
GAC 本身位于硬盘上的%systemroot%\Assembly。
显然,二进制文件本身会在运行时加载到内存中。
GAC 中的 cache 在语义上指的是二进制文件的通用存储库。
【讨论】:
cache 是任何一种机制,它可以提高加载数据的响应时间,而无需客户端采取进一步的行动:客户端以“正常”方式请求数据,缓存基本上会拦截这些请求,有时可能无需将请求转发给实际的数据提供者即可交付数据。
这绝不是特定于基于内存的。缓存存在于各种场景中,在 CPU 上以改善 RAM 的访问时间,在 Web 浏览器中以改善 Web 资源的访问时间 - 在这种情况下,作为磁盘上预编译程序集的文件夹以改善对 DLL 的访问(否则会必须编译)。
【讨论】:
GAC 物理存储在您的硬盘上。您可以使用以下命令从命令行查看物理文件:
dir %WINDIR%\assembly\GAC_32
【讨论】:
如前所述,GAC 是硬盘上的位置 (%systemroot%/assembly)。在此上下文中,术语缓存指的是商品的存储,因此这是一个常见的位置,其中强命名的版本化程序集被 .NET 应用程序存储和访问。
【讨论】:
Global Assembly Cache (GAC) 位于您的硬盘驱动器上,默认情况下为C:\Windows\Assembly,并且我在验证后还注意到您可能在C:\Windows\Microsoft.NET\GAC_[XX] 也有库,其中 [XX] 代表 32 位或 64 位或 MSIL( Microsoft Intermediate Language) 假设您的系统驱动器是 C:。
您可以点击参考链接了解更多信息。
【讨论】:
GAC 在磁盘上。想象一下将所有已签名的程序集保存在内存中......
【讨论】: