mongodb3.x java driver 细节
程序员文章站
2022-03-20 20:59:34
...
最近业务,需要在子线程中使用到mongo,本以为线程中run方法结束,MongoClient会自动销毁。在实际测试中,发现,子线程run方法语句执行结束后,如果没有关闭MongoClient,子线程就会一直存在,不会销毁。
一开始以为只在子线程中会这样,后面在main方法中直接初始化MongoClient,不关闭的话,主线程所有语句执行完毕,主线程不会停止,而是一直存在。以前没遇到过这个问题,也可能是最近3.x驱动才有的。
所以我们经常在使用单例MongoClient的时候,是没有什么问题,因为进程结束时所有资源都会被释放,当然MongoClient内部不知用何种方式一直存在的资源也会被释放掉。但是如果在子线程中初始化了MongoClient,而不关闭的话,会导致内存泄露,切记子线程中自己打开的MongoClient要及时调用close方法,保证MongoClient的资源被释放掉。
mongo java driver version:mongo-java-driver-3.2.0
下一篇: 关于div显示与隐藏的详细介绍