与MSSQL的连接消耗太多内存

时间:2019-06-07 09:49:49

标签: java sql-server jdbc mssql-jdbc

我在6.4.0-jre8版本中使用mssql-jdbc驱动程序。 我执行一个简单的SELECT *查询,该查询可能返回数百万行。为了避免OOM错误,我定义了responseBuffering=adaptivefetchSize=10000。我还确保ResultSettype_fetch_onlyconcur_read_only。尽管如此,我仍然收到OOM错误。堆大小立即飙升至XMX限制。

下面您可以找到内存转储分析。我想知道为什么TDSPackets没有足够早地释放?

enter image description here

在这里,如何避免OOM错误,我将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

问题是我在同一连接上同时执行多个查询。

根据官方文档:https://docs.microsoft.com/en-us/sql/connect/jdbc/using-adaptive-buffering?view=sql-server-2017#guidelines-for-using-adaptive-buffering

  

避免在同一连接上同时执行多个语句。在处理前一条语句的结果之前执行另一条语句可能会导致未处理的结果被缓冲到应用程序内存中。