跳转到内容

内存分配

Memory Allocation 决定 TWS / IB Gateway 这个 Java 程序最多可以使用多少内存。它不会改变 API 的函数、字段或请求格式,但会影响长时间运行时的稳定性。

入口位置:

Global Configuration / 全局配置 -> General / 通用 -> Memory Allocation / 内存分配

4000 MB 是常见推荐值之一。它的意思是:允许 TWS 最多使用约 4 GB 内存,而不是让 TWS 一启动就占满 4 GB。

如果只是运行一个几分钟的连接测试,内存分配通常不是第一优先级。更应该先确认 Socket 端口、只读模式、clientId 和账户权限。

如果你的程序会长时间运行,或者频繁请求行情、历史数据、订单状态、账户数据,就应该检查这个设置。内存太低时,TWS 可能变慢、卡顿,甚至影响 API 回调的稳定性。

典型表现包括:

现象可能含义
TWS 界面明显卡顿Java 进程内存压力或整台机器资源不足。
API 回调明显延迟TWS 本身处理变慢,或者请求量过大。
历史数据、扫描器、行情请求很多内存和 pacing limit 都需要一起关注。
长时间运行后变慢需要检查内存、日志体积、订阅数量和每日重启策略。
机器内存建议
8 GB不建议设置太高,先保持默认或小幅增加。
16 GB可以考虑 30004000 MB
32 GB 及以上4000 MB 通常更稳,再按实际负载调整。

设置不是越大越好。给 TWS 分配太多内存,可能会挤占浏览器、IDE、数据库、策略程序或系统本身的内存,反而让整台机器变卡。

TWS 页面上也提示:更改需要重新启动才能生效。修改内存分配后,建议按这个顺序处理:

  1. 点击 Apply / 应用
  2. 点击 OK / 确定
  3. 退出并重新打开 TWS。
  4. 再运行 API 连接测试。

如果你没有重启,程序连接成功与否不能证明新内存值已经生效。

服务器长期运行更推荐 IB Gateway,因为它没有完整交易界面,资源占用通常更轻。但 IB Gateway 也是 Java 程序,同样需要关注内存、重启、认证和日志。

简单理解:

场景更常见选择
Windows 桌面学习、人工确认TWS
Linux 服务器、长期后台运行IB Gateway
检查订单界面和风控提示TWS
自动化连接和稳定运行IB Gateway

内存分配只是稳定性的一部分。真正的长期运行还要同时处理断线重连、每日重启、每周重新认证、日志轮转和异常告警。

官方 TWS API 文档把内存分配列在 TWS / IB Gateway 的最佳实践设置中,强调修改后需要重启应用才会生效。