易得程序化交易技术论坛

登录 | 注册

积分: 0 |用户组: 游客

搜索
查看: 1569|回复: 1

为什么有些公式进行条件预警一下子耗尽了内存?

[复制链接]

22

主题

65

帖子

1424

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1424
发表于 2022-7-2 18:19:11 | 显示全部楼层 |阅读模式
我使用了大量跨周期或跨品种引用的公式进行全市场条件预警,发现内存占用很大,不久就将系统内存耗完了,怎么办?
回复

使用道具 举报

22

主题

65

帖子

1424

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1424
 楼主| 发表于 2022-7-2 18:21:29 | 显示全部楼层
易得程序化条件预警为了加快运算速度,会将预警品种的全部数据加载到内存,如果您的公式中有大量跨周期或跨品种数据引用而且是全市场的预警,那么全市场的各种数据都会被加载到内存,所以占用内存会特别大。

当然,您可以去掉“引用数据常驻内存”选项,避免内存常驻内存。这样的话每次计算完成后会立即释放内存,下次预警计算再重新加载数据。如果频率是tick级别高频预警,可能会对性能有些影响,如果分钟或以上级别的预警,其实也不需要常驻内存。

数据是否常驻内存是一把双刃剑,要么牺牲内存空间,要么牺牲性能。如果您确实要进行全市场的tick级别高频预警,而且有大量跨周期引用,那么也可以通过加大机器物理内存配置来解决,这也是一种很极端的情况。

引用数据常驻内存的解释:公式中对于StkIndi、StkIndi2、单引号实现的引用函数,引用的数据在整个运算周期常驻内存不释放。常驻内存会提升运行速度,但也会占用更多内存。如果监控的品种数量过多,大量引用跨周期跨品种数据,常驻内存可能会消耗大量内存,造成系统内存不足。该选项作用等同于函数RefDataKeepMem。如果出现因大量引用数据耗尽内存,可去掉该选项,引用数据用完即释放。常驻内存就快,不常驻就占内存少,使用者自己根据实际情况衡量。

1.png

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|易得程序化 ( 粤ICP备2022064048号 )

GMT+8, 2025-5-3 23:39 , Processed in 0.056962 second(s), 21 queries .

快速回复 返回顶部 返回列表