FAQ > 金融建模 > 建模问题 > 报错信息汇总

Q:运行程序报错:instruction:usercall: memory overflow    

  • 运行程序报错:instruction:usercall: memory overflow:18446744073709005439(0(grid)),licensed:16777216000,please check
    A:报错原因是程序运行过程中产生的缓存过多,导致占用超过了服务器分配给账号的最大运行内存(默认是16G),无资源可再被调用所以报错。

    解决办法:

    优化代码:
    1、检查模型中是否有大量缓存应用,可适当减少不必要的缓存数据。比如SysParams等操作。
    2、清除掉程序中产生的多余的大数据变量,比如,程序向下走时,该数据已无它用,有用的数据已保存在其它变量中,此时,我们可将这个数据给提前清除掉,而不是等到程序结束才做此操作,清除的方法可以是重新赋值,比如:a:=array();等。
    3、程序若是循环运行运算,无上下相交的关系,可在循环中将结果保存在本地,避免程序运行好长时间后报错结果丢失。
    导出方法,可参考:FAQ:Q:如何把数据导出成TXT文件,如果导出数据有很多行,怎么操作,stm,txt,csv文件大小,stm只被天软接受吗,stm文件如何导入?
    比如:rdo2 exportfile(ftxls(),'','C:\\TSData\\FundGMData.xlsx',r);
    其中,'C:\\TSData\\FundGMData.xlsx'为文件存储路径及名称,r则为想要留下的结果。
    (excel文件适应于保存二维数组,若是多维的,可保存为stm格式)

    若是天软客户端用户,代码自己优化后还是不能解决问题,可以咨询天软技术人员。

    审请最大运行内存空间:
    若是落地服务器,若有必要(无法优化代码,缓存有必要),可向服务器管理人员审请扩大。