gpt4 book ai didi

Java - 内存使用和多个 jar 实例

转载 作者:行者123 更新时间:2023-12-02 08:15:59 25 4
gpt4 key购买 nike

我目前正在使用 Java、MongoDB 和多个线程。

对于每个线程,我运行 MongoDB 连接。

private Mongo m;
m = new Mongo();

我查看了 TOP 的内存使用情况,看到了 MongoDB Jar 的多个实例(调用库 mongo-2.6.3.jar)。我试图在每个线程处理结束后销毁它:

m.close();
m = null;
System.gc();

但是在我的程序停止之前,内存中不会有任何实例。

有什么想法吗?谢谢。

<小时/>

好的,我已经对教程进行了一些测试,但不是很成功。事实上,我有:

public class process {
public static Mongo m;
public static DB db;

public process() {
m = new Mongo();
//for each database
threadDatabase thread = new threadDatabase(database);
thread.start();
}
}

public class threadDatabase extends Thread {
public threadDatabase (String database) {
this.database = database;
}

public void run() {
process.db.requestStart();
processDatabase(this.database);
process.db.requestDone();
}


private boolean processDatabase(String dbname) {
process.db = process.m.getDB(dbname);
//getting data on the dedicated database
}
}

最佳答案

来自Java Tutorial about MongoDB

The Mongo object instance actually represents a pool of connections to the database; you will only need one object of class Mongo even with multiple threads. See the concurrency doc page for more information.

清空引用并调用System.gc并不能保证释放或垃圾收集任何资源。更多信息请参见 this question .

我的建议:每个虚拟机仅使用一个 Mongo 实例,其余的将自动处理。

关于Java - 内存使用和多个 jar 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com