0

我编写了一个应用程序来传输记录作为从 Sybase Ase 数据库读取并编写一个新创建的本地 Sybase Asa 数据库。有近 110.000 条记录需要传输。

在我的本地机器上,应用程序成功运行(Windows7- 32 位 - 3GB 内存),但在开发服务器(Windows Server 2008 - 64 位 - 8GB 内存)上,当我的 ;

  • 记录数为 ~ 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 asa数据库的批处理文件;

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**

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

4

1 回答 1

1

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

于 2013-07-05T07:30:04.847 回答