我指的是上一篇文章Tridion 2009 Template Publishing Failure,其中我解释说我们的系统在大规模发布期间显然是随机崩溃的。
我们正在使用XSLTMediator&我们所有的模板都基于TemplateBase
解决方案
我被告知错误可能与垃圾收集/ COM +有关 - 我认为它有点像红色鲱鱼,TemplateBase解决方案明确地实现IDisposable
,它应该处理所有GC / COM + nastiness ? (与Set obj中的VBScript天不同,没有什么可以避免内存泄漏)!
感谢。
答案 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在后台线程中运行,并且我们不知道它将在何时执行,因此总是在所有弱引用中添加空检查,以确保在使用它之前对象仍处于活动状态,以防它是已经收集过,你需要再次实例化弱引用。