编程中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期。从申请分配、到使用、再到最后的释放。这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记释放内存,导致可用内存减少,从而导致内存的泄露。Java语言对内存管理做了自己的优化,这就是垃圾回收机制。Java的几乎所有内存对象都是在堆内存上分配(基本数据类型除外),然后由GC负责自动回收不再使用的内存,所以java内存泄漏比较少,比如张老师提到过的,根据对象hashcode值检索对象的hashmap中,如果你改变了hashmap中某个对象中参与hashcode运算的属性值的话,他的hashcode就会前后不一致, 你在删除这对象的的时候,无法删除那个对象,一直占用内存,造成内存泄漏. |