欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongodb3.x java driver 细节  

程序员文章站 2022-03-20 21:53:34
...

   最近业务,需要在子线程中使用到mongo,本以为线程中run方法结束,MongoClient会自动销毁。在实际测试中,发现,子线程run方法语句执行结束后,如果没有关闭MongoClient,子线程就会一直存在,不会销毁。

   一开始以为只在子线程中会这样,后面在main方法中直接初始化MongoClient,不关闭的话,主线程所有语句执行完毕,主线程不会停止,而是一直存在。以前没遇到过这个问题,也可能是最近3.x驱动才有的。

    所以我们经常在使用单例MongoClient的时候,是没有什么问题,因为进程结束时所有资源都会被释放,当然MongoClient内部不知用何种方式一直存在的资源也会被释放掉。但是如果在子线程中初始化了MongoClient,而不关闭的话,会导致内存泄露,切记子线程中自己打开的MongoClient要及时调用close方法,保证MongoClient的资源被释放掉。

   mongo java driver versionmongo-java-driver-3.2.0