数据传输时出现“内存不足”错误

时间:2013-07-04 13:20:15

标签: c# out-of-memory sybase-asa

我编写了一个应用程序,用于将记录从Sybase Ase数据库读取并写入新创建的本地Sybase Asa数据库。有近110,000条记录需要转移。

在我的本地计算机上,应用程序成功运行(Windows7-32位 - 3GB内存),但在开发服务器上(Windows Server 2008 - 64位 - 8GB内存),我的时候出现“OUT OF MEMORY”错误;

  • 记录数为~40,000,“工作集 - 私人”~1.800.000kb(2,8gb)
  • gc总内存增量稳定

我的日志流在这里;

  • 详细工作集 - 私人:507948K,GC GetTotalMemory:49229720
  • 详细工作集 - 私人:918620K,GC GetTotalMemory:51377000
  • 详细工作集 - 私有:1328568K,GC GetTotalMemory:52245316
  • 详细工作集 - 私有:1739128K,GC GetTotalMemory:52978364
  • 详细工作集 - 私人:1813940K,GC GetTotalMemory:51567670
  • 内存不足 -

此批处理文件也用于创建本地sybase作为数据库;

set dbToolsPath=%1
set dbDirectory=%2
set scriptsDirectory=%3
set dbNameWOExtension=%4

REM Add trailing back slashes if necessary
IF NOT %dbToolsPath:~-1%==\ SET dbToolsPath=%dbToolsPath%\
IF NOT %dbDirectory:~-1%==\ SET dbDirectory=%dbDirectory%\
IF NOT %scriptsDirectory:~-1%==\ SET scriptsDirectory=%scriptsDirectory%\

set mfgDBFilePath=%dbDirectory%%dbNameWOExtension%.db
set mfgDBLogFilePath=%dbDirectory%%dbNameWOExtension%.log
REM Following four lines can be moved to code
attrib -R       %mfgDBFilePath%
del             %mfgDBFilePath%
attrib -R       %mfgDBLogFilePath%
del         %mfgDBLogFilePath%

REM TODO: Add explanation about the switches
cd /d %scriptsDirectory%
**%dbToolsPath%dbinit.exe -n -p 4096 -z 1252LATIN1 %mfgDBFilePath%
%dbToolsPath%dbspawn.exe -p dbeng10 -n WfDBServer %mfgDBFilePath%
%dbToolsPath%dbisql.exe -c "eng=WfDBServer;dbn=%dbNameWOExtension%;uid=dba;pwd=sql" -nogui PE_WfDB_MFG.sql
%dbToolsPath%dbstop.exe -c "eng=WfDBServer;uid=dba;pwd=pluto" -y**

这些是获得的知识,但我不明白为什么中止传输与此错误。我的机器上一切正常,服务器上有什么不同?我必须在哪里寻找问题?我还必须如何评论私人的增量?

1 个答案:

答案 0 :(得分:1)

最可能问题是由于项目配置中的错误平台(我猜的是x86)。您可以选择AnyCPU或x64作为平台并重建应用程序。查看标记的答案.NET Out Of Memory Exception - Used 1.3GB but have 16GB installed