gpt4 book ai didi

java - 如果存储在静态存储中,方法局部变量是否会被垃圾收集?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:39:43 26 4
gpt4 key购买 nike

我正在创建一个客户端类,它将连接到不同类型的数据库。以下是我正在尝试执行的代码片段。

public class Client{
private static Map<ApplicationTypeEnum, Connection> connectionPool = new HashMap<>();

public void init() throws Exception {

try {
Connection con1 = getConnection(someparams...);
connectionPool.put("app-1",con1)
Connection con2 = getConnection(someparams...);
connectionPool.put("app-2",con2)
} catch (Exception pe) {
throw pe;
}
}
}

现在 Connection 对象是 init 的本地对象,所以 Connection 对象是否有可能在控制失效时被垃圾回收init 方法。

最佳答案

只要存在任何指向这些对象的引用,它们就不会被垃圾回收。在您的情况下,您有静态变量 connectionPool 指向 map ,保存这些对象。如果您从上面提到的映射中删除这些对象或将另一个映射分配给没有这些对象的 connectionPool 并且不会有任何其他对这些对象的引用,那么它们将被收集。

关于java - 如果存储在静态存储中,方法局部变量是否会被垃圾收集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44346395/

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