Java Map释放内存置null以及调用clear()的区别
来源:互联网 发布:看图软件apk 编辑:程序博客网 时间:2024/05/17 08:25
大家好,我是菜到不行的程序员,这是我第一次写博客,有什么不对的地方欢迎指教。
闲话少说,今天自己在总结map的时候,想到了在释放Map对象空间的时候就有使用过将Map对象置null,也有时候会调用clear()将Map中的数据清除,那么它们都有什么区别呢?
Map<Integer, String> map = new HashMap<>();
首先,在创建一个map对象时,map指向堆中新创建的对象,这时候的map是一个没有key和value的空对象。众所周知,
map.hashCode()某种意义上相当返回了对象的地址。所以在用刚创建的map对象调用hashCode()方法:
System.out.println("map.hashCode:"+map.hashCode());输出结果如下:
再看看hashCode()的源码:
通过源码可以发现,hashCode()方法通过获取key和value返回的哈希值进行异或运算后返回结果值,如果key和value值为空则返
回0。此时我们给map对象put值进去,然后再输出一个hashCode()返回的值:
map.put(1,"霍去病");map.put(2,"李广");map.put(3,"刘彻");map.put(4,"马邑");map.put(5,"桑弘基");map.put(6,"苏武");System.out.println("新map.hashCode:"+map.hashCode());
返回了一串数字,此时说明map中是有数据的,这个时候我们再使用clear()方法将map中的数据清空后再次输出hashCode()返回
的值,发现仍然是0。
map.clear();System.out.println("after clear:"+map.hashCode());
如果直接将map对象置null,这个时候再次输出hashCode()则不会有输出结果,而是报空指针异常了。
到这里,就很明白了,虽然将map对象的数据都clear()了,key和value为null,但是内存中map对象还存在,并且map
具有强引用,虽然key和value为空,但是JVM的垃圾回收器并不会回收该对象的内存,如果再程序中创建很多这样子的没
有释放的对象就会造成内存泄漏,所以小伙伴们再创建map对象的时候,如果不再用到该对象的时候,要注意及时释放该对象
的内存空间。有什么写的不好的欢迎大家指出,我及时修改好不误人子弟。
- Java Map释放内存置null以及调用clear()的区别
- Vector清空数据与释放内存(.clear与.swap的区别与使用)
- map的内存释放问题
- JAVA中isEmpty、null以及""的区别
- 【转】[STL]vector和deque的内存释放(clear)
- 【转】[STL]vector和deque的内存释放(clear)
- 该死的clear 根本不释放内存,怎么才能释放泛型LIST的内存?
- null,""以及" "的区别
- 由STL map调用clear后,内存不返还给操作系统的问题出发,探讨glibc malloc/free行为
- 由STL map调用clear后,内存不返还给操作系统的问题出发,探讨glibc malloc/free行为
- 由STL map调用clear后,内存不返还给操作系统的问题出发,探讨glibc malloc/free行为
- STL map内存释放的问题
- QList指针中的clear后不会自动释放内存,需要之前调用qDeleteAll()
- 内存分配、释放以及内存分配系统调用
- Map数据类型使用new map()和null及clear方法后的不同之处
- Map的clear()方法
- IOS (null)以及<null>的区别
- JAVA中isEmpty和null以及""的区别
- CaffeOnSpark 安装笔记 可以正常运行
- the solve of volume problem
- 保留小数点后两位(必须是数字)
- sublime text3快捷键设置为eclipse差不多
- merge and rebase
- Java Map释放内存置null以及调用clear()的区别
- cypher实践之获取路径中name属性最短的那个节点
- chrome开发者工具使用技巧(看了定不让你失望)
- jhat:虚拟机堆转储快照分析工具
- Groovy集合(map)
- 详细图解mongodb下载、安装、配置与使用
- USB 配置,接口,设置,endpoint描述符的关系
- 概率论大作业
- 8. python 点滴