运行程序报错: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格式)
若是天软客户端用户,代码自己优化后还是不能解决问题,可以咨询天软技术人员。
审请最大运行内存空间:
若是落地服务器,若有必要(无法优化代码,缓存有必要),可向服务器管理人员审请扩大。