内存分配
Memory Allocation 决定 TWS / IB Gateway 这个 Java 程序最多可以使用多少内存。它不会改变 API 的函数、字段或请求格式,但会影响长时间运行时的稳定性。
入口位置:
Global Configuration / 全局配置 -> General / 通用 -> Memory Allocation / 内存分配4000 MB 是常见推荐值之一。它的意思是:允许 TWS 最多使用约 4 GB 内存,而不是让 TWS 一启动就占满 4 GB。
什么时候需要关注
Section titled “什么时候需要关注”如果只是运行一个几分钟的连接测试,内存分配通常不是第一优先级。更应该先确认 Socket 端口、只读模式、clientId 和账户权限。
如果你的程序会长时间运行,或者频繁请求行情、历史数据、订单状态、账户数据,就应该检查这个设置。内存太低时,TWS 可能变慢、卡顿,甚至影响 API 回调的稳定性。
典型表现包括:
| 现象 | 可能含义 |
|---|---|
| TWS 界面明显卡顿 | Java 进程内存压力或整台机器资源不足。 |
| API 回调明显延迟 | TWS 本身处理变慢,或者请求量过大。 |
| 历史数据、扫描器、行情请求很多 | 内存和 pacing limit 都需要一起关注。 |
| 长时间运行后变慢 | 需要检查内存、日志体积、订阅数量和每日重启策略。 |
| 机器内存 | 建议 |
|---|---|
| 8 GB | 不建议设置太高,先保持默认或小幅增加。 |
| 16 GB | 可以考虑 3000 到 4000 MB。 |
| 32 GB 及以上 | 4000 MB 通常更稳,再按实际负载调整。 |
设置不是越大越好。给 TWS 分配太多内存,可能会挤占浏览器、IDE、数据库、策略程序或系统本身的内存,反而让整台机器变卡。
修改后要重启
Section titled “修改后要重启”TWS 页面上也提示:更改需要重新启动才能生效。修改内存分配后,建议按这个顺序处理:
- 点击
Apply / 应用。 - 点击
OK / 确定。 - 退出并重新打开 TWS。
- 再运行 API 连接测试。
如果你没有重启,程序连接成功与否不能证明新内存值已经生效。
和 IB Gateway 的关系
Section titled “和 IB Gateway 的关系”服务器长期运行更推荐 IB Gateway,因为它没有完整交易界面,资源占用通常更轻。但 IB Gateway 也是 Java 程序,同样需要关注内存、重启、认证和日志。
简单理解:
| 场景 | 更常见选择 |
|---|---|
| Windows 桌面学习、人工确认 | TWS |
| Linux 服务器、长期后台运行 | IB Gateway |
| 检查订单界面和风控提示 | TWS |
| 自动化连接和稳定运行 | IB Gateway |
内存分配只是稳定性的一部分。真正的长期运行还要同时处理断线重连、每日重启、每周重新认证、日志轮转和异常告警。
官方 TWS API 文档把内存分配列在 TWS / IB Gateway 的最佳实践设置中,强调修改后需要重启应用才会生效。