关于 ThreadLocal 的疑问

捏造的信仰 捏造的信仰 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想知道当线程结束后,相应的 ThreadLocal 对象是否会被释放?我写了一个测试:

import java.util.Date;

/**
* 测试大量 ThreadLocal 是否被释放
*
* @author yidinghe
*/
public class TestLargeAmountThreadLocals extends Thread {

private static ThreadLocal cache = new ThreadLocal();

public void run() {
cache.set(new Date());
}

public static void main(String[] args) throws Exception {
long mem0 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
for (int i = 0; i < 1000; i++) {
new TestLargeAmountThreadLocals().start();
}
Thread.sleep(5000);
long mem1 = Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory();
System.out.println("usage: " + (mem1 - mem0));
}
}

测试结果却是:
usage: -17736

我不知道这是怎么回事。
...全文
评论 4
收藏 已收藏
分享
返回顶部
捏造的信仰
Java SE 62,621 成员 307,251 内容