【发布时间】:2013-02-02 13:42:54
【问题描述】:
我们有大约 80 个应用程序将在同一台服务器上。 所有使用相同自定义构建应用程序、aspnet webform、c# 的非常小的站点是否已编译。 每个应用程序在其自己的 bin 目录中都有一个应用程序 dll 副本,以及一些开源第三方库(bin 文件夹在磁盘上大约 15mb) 该应用程序由我提供,因此我可以重建签名并放入 GAC,以便所有站点都可以从那里获取。 我的问题是:“就内存消耗而言,gac 中只有一个 dll 副本而不是 80 个副本会更好吗?” “这是否可以提高整体性能和内存使用量,除了我可以删除 15*80Mb 磁盘空间使用量之外?” 谢谢
【问题讨论】:
-
我只能考虑使用像VMMap 这样的工具来确定内存是否和/或是否可以共享。这些应用是否共享同一个应用域?
-
很好的建议。该工具确实表明,asp 在临时文件夹中创建了每个 dll 的副本。所以磁盘空间消耗是两次(一个在 bin 中,一个在 temp 中),每个使用的 dll 都保存在内存中并消耗内存两次。相反gac dll被加载一次。我想这会导致服务器上的大量加载/卸载过程,并可能减慢站点服务速度。可能在 gac 中移动大部分 dll 可以提高整体性能。
标签: c# asp.net iis-7 gac application-pool