Tridion出版和垃圾收集

时间:2012-06-22 11:09:09

标签: tridion tridion2009

我指的是上一篇文章Tridion 2009 Template Publishing Failure,其中我解释说我们的系统在大规模发布期间显然是随机崩溃的。

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

我被告知错误可能与垃圾收集/ COM +有关 - 我认为它有点像红色鲱鱼,TemplateBase解决方案明确地实现IDisposable,它应该处理所有GC / COM + nastiness ? (与Set obj中的VBScript天不同,没有什么可以避免内存泄漏)!

感谢。

2 个答案:

答案 0 :(得分:2)

听起来你需要做一些深入的调试。有关此主题的高质量信息的一个来源是Tess Ferrandez' blog

答案 1 :(得分:-2)

这里有一些注意事项。

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

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

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

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

4)考虑使用WeakReferences。弱引用会立即将您的对象标记为GC准备就绪。由于.Net GC在后台线程中运行,并且我们不知道它将在何时执行,因此总是在所有弱引用中添加空检查,以确保在使用它之前对象仍处于活动状态,以防它是已经收集过,你需要再次实例化弱引用。