1.深入的探究这个问题就需要了解Java是如何管理内存的,需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间,对象的释放是由GC决定和执行的。在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的
2.Java理论上不存在内存泄露,因为有垃圾回收器(GC)对内存进行释放。
2.Java理论上不存在内存泄露,因为有垃圾回收器(GC)对内存进行释放。
3.实际上,java也存在内存泄露问题,原因:主要是一些对象虽然不再被使用,但它们仍然被引用。
怎样阻止内存泄露
1.使用List、Map等集合时,在使用完成后赋值为null
2.使用大对象时,在用完后赋值为null
3.目前已知的jdk1.6的substring()方法会导致内存泄露
4.避免一些死循环等重复创建或对集合添加元素,撑爆内存
5.简洁数据结构、少用静态集合等
6.及时的关闭打开的文件,socket句柄等
7.多关注事件监听(listeners)和回调(callbacks),比如注册了一个listener,当它不再被使用的时候,忘了注销该listener,可能就会产生内存泄露