gpt4 book ai didi

java静态hashmap内存问题

转载 作者:行者123 更新时间:2023-12-01 17:40:36 25 4
gpt4 key购买 nike

我有 2 个类,我们称之为 A 类和 B 类。

public class A{
private static HashMap<String,B> isc= new HashMap<String,B>();

public static void UserDisconnected(String key){
if(isc.containsKey(key)){
if(isc.get(publicSID).timer != null){
isc.get(key).timer.cancel();
isc.get(key).timer=null;
}
isc.remove(key);
}
log.debug("isc size:" + isc.size());
}

//and other non-static variables and methods

}

public class B{
//contain no static variables and methods
public void startStream(){
timer = new Timer();
timer.schedule(new timedTask(), 0, interval);
}

public class timedTask extends TimerTask{
public void run(){
//do something
}
}

类 A 将在应用程序的整个生命周期中存在,而类 B 的实例则在类 A 的 hashmap(isc) 中引用。问题是,在我运行A类中的UserDisconnected()方法后,我看到isc的大小为0,但是Windows Server 2008的任务管理器中显示的内存使用量又下降了,看不到任何内存被释放。所以,我想知道,hashmap 中的 B 类实例是否被垃圾回收了?或者它们丢失在垃圾收集器甚至无法收集的地方。

谢谢。

最佳答案

我认为您不会期望看到任务管理器中的内存使用量下降。使用的内存将返回给 Java 供将来使用,而不是返回给操作系统供其他应用程序使用。

关于java静态hashmap内存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205604/

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