为什么加载32 760个报告后却出现"内存不足"的情况?

2020-09-22 08:51发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我在Visual Studio 2010和Crystal Report for VB.Net 中完成了WCF Web服务。 具有运行时13.0.6.1027的Visual Studio。 该Web服务需要以PDF生成41000个报告,但是像32760个报告一样,我总是收到" Out of memory"消息。 我对此存档的帖子有完全相同的问题: https://archive.sap .com/discussions/thread/3622718 。 我可以使用这个简单的应用程序模拟相同的行为:

尝试
 Dim i As Integer = 0
 而(i <40000)
     将monTestMemory调暗为TestMemoryLeak = New TestMemoryLeak()
     monTestMemory.Load(" TestMemoryLeak.rpt")'
     monTestMemory.Close()
     monTestMemory.Dispose()
     monTestMemory =什么都没有
     lblEtat.Content =" Rapport:" + i.ToString()i = i + 1
 异常捕获时结束
     MessageBox.Show(例如消息+"" +例如StackTrace)
 结束尝试
 

这个简单的应用程序将始终在报告32760的加载周围发生异常。

有人知道如何使它工作吗?

提前谢谢!

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我在Visual Studio 2010和Crystal Report for VB.Net 中完成了WCF Web服务。 具有运行时13.0.6.1027的Visual Studio。 该Web服务需要以PDF生成41000个报告,但是像32760个报告一样,我总是收到" Out of memory"消息。 我对此存档的帖子有完全相同的问题: https://archive.sap .com/discussions/thread/3622718 。 我可以使用这个简单的应用程序模拟相同的行为:

尝试
 Dim i As Integer = 0
 而(i <40000)
     将monTestMemory调暗为TestMemoryLeak = New TestMemoryLeak()
     monTestMemory.Load(" TestMemoryLeak.rpt")'
     monTestMemory.Close()
     monTestMemory.Dispose()
     monTestMemory =什么都没有
     lblEtat.Content =" Rapport:" + i.ToString()i = i + 1
 异常捕获时结束
     MessageBox.Show(例如消息+"" +例如StackTrace)
 结束尝试
 

这个简单的应用程序将始终在报告32760的加载周围发生异常。

有人知道如何使它工作吗?

提前谢谢!

付费偷看设置
发送
2条回答
软件心理学工程师
1楼 · 2020-09-22 09:32.采纳回答

Crystal SDK基于COM对象,.NET在内存方面对COM的管理不是很好。 即使在正确使用.Dispose()的情况下,也必须通过在.Dispose()之后和在将其分配为空之前添加以下行来强制释放它:

Marshal.ReleaseComObject(MonTestMemory);

-Dell

浮生未央
2楼-- · 2020-09-22 09:21

还有时间升级到运行时的最新版本:

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

从错误中还建议您在每次使用后不释放报告,并且计数一直在增加。 按照Dell指示清理对象。

一周热门 更多>