我构建了我的第一个 Java 程序,它建立在Interactive Brokers Java API之上。这可能很重要,也可能不重要。我只是用几个新类扩展了主要的 API 类。
该程序正在对远程服务器进行数据查询。当服务器响应时,我将接收到的数据记录到本地 MySQL 数据库中。一旦程序完成记录数据,程序将发出下一个数据请求。
在发出几百个服务器请求后,让程序运行一段时间后,我遇到了问题。我会看到这个错误,然后程序不会继续执行:
java.lang.OutOfMemoryError: Java heap space
我做了一些研究,根据我读到的内容,我得出结论,该程序正在创建许多新变量,而不是破坏旧的无价值变量。由于我使用 Netbeans 进行开发,因此我使用Netbeans 分析器检查是否是这种情况。看这里的图片:
运行程序一段时间后,越来越多的内存被Byte
. 所以看来我的理论还是正确的。
我真的不知道从这里去哪里。没有对类或特定变量的引用,只是变量类型。如何确定问题出在哪里?
更新
我更正了 BigMike 在评论中提到的一个特定问题。以前,我在 JDBC MySQL 连接器 API 中创建了许多语句,并且我正在调用.execute()
以执行这些语句,但我没有使用.close()
.
我确保statement.close()
在每次执行后添加调用,并且程序现在运行得更好。通过查看该程序的 RAM 使用情况,它似乎解决了这个问题。我也没有看到Java heap space
错误了,这很好。
谢谢!