MongoDB,Java:访问游标将打开无法关闭的连接

MongoDB,Java:访问游标将打开无法关闭的连接,java,mongodb,connection,Java,Mongodb,Connection,我无法关闭总是在访问MongoDB游标后创建的连接 我正在从运行mongod实例的控制台收集有关连接的信息。我还没有使用任何mongodb复制或切分 例如,导致打开连接的示例代码(假设“myQuery”只是某个查询,coll使用setInternalClass映射到类MyObject): DBCursor find=coll.find(myQuery); List myObjects=new ArrayList(); while(find.hasNext()){//此行打开连接 MyObject

我无法关闭总是在访问MongoDB游标后创建的连接

我正在从运行mongod实例的控制台收集有关连接的信息。我还没有使用任何mongodb复制或切分

例如,导致打开连接的示例代码(假设“myQuery”只是某个查询,coll使用setInternalClass映射到类MyObject):

DBCursor find=coll.find(myQuery);
List myObjects=new ArrayList();
while(find.hasNext()){//此行打开连接
MyObject next=(MyObject)find.next();
myObjects.add(下一步);
}
find.close();//此线路无法关闭连接

您正在对查找对象(DBCursor)调用close。如中所述,这将只关闭光标,而不关闭基础连接。要关闭连接,应在Mongo/MongoClient对象上调用close,该对象继承或具有关闭功能,将关闭与MongoDB服务器实例的所有连接。

您好,谢谢。但是,对于整个正在运行的应用程序,使用一个mongo客户端实例也是一个很好的做法,因此在企业应用程序中对客户端调用close不是一个好主意,是吗?驱动程序有一个连接池,可以通过MongoOptions对其进行配置,使许多已建立的空闲连接始终处于打开状态,以便于更快地查询。您的说法是正确的,在应用程序终止之前,您不需要关闭此池。因此,换句话说,我可以忽略打开的连接,因为MongoDB将处理它,并在需要时关闭其中一些连接?这是一般原则。您应该检查Java驱动程序并发页面,它有很多deail->Sorry,因为OutOfMemory而调查相同的问题。因此,在日志文件中有[conn3500]可以吗?我怀疑是这样。(数字上升,无一关闭)
  DBCursor find = coll.find(myQuery);
  List<MyObject> myObjects = new ArrayList<MyObject>();
  while(find.hasNext()) { // this line opens the connection
        MyObject next = (MyObject) find.next();
        myObjects.add(next);
  }
  find.close(); // this line will not close the connection