-2

我参考了之前的一篇文章Tridion 2009 模板发布失败,其中我解释说我们的系统在大规模发布期间显然是随机崩溃的。

我们正在使用 XSLTMediator,我们所有的模板都基于解决TemplateBase方案

我被告知该错误可能与垃圾收集/COM+有关——我认为这有点牵强,TemplateBase解决方案IDisposable明确实现了应该处理所有GC/COM+的麻烦?(不像 VBScript 时代的 Set obj = Nothing to avoid memory leaks)!

谢谢。

4

2 回答 2

2

听起来您需要进行一些深入的调试。关于该主题的高质量信息的一个来源是Tess Ferrandez 的博客

于 2012-06-22T13:17:44.030 回答
-2

这里有一些考虑。

1) 使用 Marshal.ReleaseComObject 释放 Tridion COM 对象,但不要只调用一次,直到引用计数器达到 0。

while (Marshal.ReleaseComObject(component) > 0);

2) 不要在函数中将 COM 对象作为参数传递。

3) 不要尽可能多地声明或避免将 COM 对象声明为类中的字段。

4) 考虑使用弱引用。弱引用将立即将您的对象标记为准备好进行 GC。由于 .Net GC 在后台线程中运行,并且我们不知道它何时执行,因此始终在所有弱引用中添加一个空值检查,以确保在使用它之前您的对象仍然存在,以防万一已经收集了,您将需要再次实例化弱引用。

于 2012-06-25T19:12:48.453 回答