mongodb3.x java driver 细节

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

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

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

   mongo java driver versionmongo-java-driver-3.2.0

猜你喜欢

转载自kibear.iteye.com/blog/2293065