1.每条线程都有一个ThreadLocalMap对象,而可以有多个threadlocal对象存放在map中。
2.放在map中的key是WeakReference>,也就是ThreadLocal的弱引用。
3.ThreadLocalmap会把那些过期的key设置为null,并且删除那些key为null的值。
4.ThreadLoca服务器托管网lmap的key是弱引用,也就是说弱引用在没有被其他强引用所引用,gc就会回收。而value是强引用,如果用线程池技术,该线程一直没有结束,value一直没办法被回收。所以key为null的entry的value就一直占据内存,造成内存泄露。
5.因为上述的原因,在ThreadLocal这个类的get()、set()、remove()方法,均有实现回收 key 为 null 的 Entry 的 value所占的内存。所以,为了防止内存泄露(没法访问到的内存),在不会再用ThreadLocal的线程任务末尾,调用一次 上述三个方法的其中一个即可,一般使用remove。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
大家好,好久不见,今天笔者用心一步步写一份mysql的基础操作指南,欢迎各位点赞收藏 — 启动MySQL net start mysql– 创建Windows服务 sc create mysql binPath= mysqld_bin_path(注意:等号…