Q :在SAP Business One中如何才能提高系统内存分配

以下内容主要针对SAP Business One 软件在使用过程中可能遇到的内存不足的问题,所对其进行优化和改善作用。

按照企业业务发展需求的不同作为其使用的ERP系统SAP Business One (简称B1)数据库的数据量也随之增大,在这种情况下会导致操作系统在运行某些任务的时候,例如在生成复杂报表、系统同时运行多个add-on插件等情况下,操作系统会报错,这也说明了其内存不足,或者操作系统直接失去响应,而非正常关闭。

关于这个问题需要从操作系统上进行查找原因,实际理论上而言,不管电脑系统安装了多少物理内存,对一个32位的应用程序来说在内存空间中能使用的内存最多只有4GB。而在32位的windows系统中,正常情况下系统限制是2GB容量,另外2GB是被操作系统内部保留使用。而我们知道,目前发行的B1还是典型的32位Windows程序,受限于Windows系统的这个限制,B1能使用的内存可能也就只有2GB。

从这个理论得出对B1而言2GB的内存容量的确不够使用,对B1来说一个大容量的数据操作时候或启动了多个add-on的时候,内存的容量肯定不够使用。

关于这个问题,SAP早以意识到此问题的严重度,并做了一些策略来应对此问题。

Windows可执行程序有一个标志位: IMAGE_FILE_LARGE_ADDRESS_AWARE 。当设置了这个标志位的时候,Windows就会试图为该应用程序分配更多的内存空间。具体情况是这样的:(参见 http://msdn.microsoft.com/en-us/library/windows/desktop/aa366778(v=vs.85).aspx

  • 如果当前Windows是32位的,普通模式启动,那么很遗憾,情况没有改善。该32位应用程序得到的内存空间还是2GB,另外2GB为操作系统保留。
  • 如果当前Windows是32位的,且是以/3GB 启动参数方式启动的,那么,该应用程序将得到3GB的内存空间。而操作系统自身只保留1GB的空间地址。
  • 如果当前Windows是64位的,那么32位应用程序将直接得到4GB的内存空间。

而我们的B1应用程序现在已经是设置了 IMAGE_FILE_LARGE_ADDRESS_AWARE 的标志位的。所以,我们可以利用这一特性,配合操作系统,将B1的寻址空间由2GB扩展为3GB甚至4GB。由此,原来很多因内存不够而失败的操作,将会有明显改善,可能就会通过了。

通过上面分析和描述,最佳的方案是推荐大家使用64位的操作系统。随着windows 7流行,64位的操作系统也越来越贴近日常的工作生活,甚至也包括了即将发布的windows 8 的64位版本。在这样的情况下,作为客户不必需要做任何的设置,B1系统直接就可以享受4G的内存空间!

而如果你的操作系统还停留在32位,比如32位的Windows XP或者Windows Server 2003,那么根据上面的分析,还是有改进余地的,就是给操作系统加上启动参数 /3GB。这样可以让B1的可用内存从2GB扩大到3GB。

参阅http://technet.microsoft.com/en-us/library/bb124810(EXCHG.65).aspx , 修改启动参数的具体操作如下:

    鼠标右击我的电脑,选择属性,出现系统属性对话框。
    点击高级选项页。
    在启动和恢复设置中,点击设置,出现启动和恢复对话框。
    在系统启动中,点击编辑。
    在[Operating Systems]这一节,将/3GB这个参数添加到启动项的/fastdetect的后面。
    保存修改,关闭记事本。
    点击确定两次,关闭打开的对话框。重启动电脑,设置生效。

A :