java 内存泄漏

java中会存在内存泄漏吗,什么是内存泄漏?如何处理?

会存在,而且很容易发生,需要高技巧设计。

Java也存在内存泄露。不过和C的不一样。C是因为没有自动收集,所以必须手动清除对象。Java有自动收集器收集不用的对象,不用考虑因为忘记写清除内存代码而造成泄露。但是Java的收集器收集的对象必须没有任何引用。但是有时候我们写的对象在使用完成后,还由引用指向这个对象。但是这个对象已经作废了。因为引用的存在,所以无法被收集器收集。这种对象越来越多,就是Java的内存泄露。
处理的办法就是清理代码,找到忘记把引用置Null的地方,把引用置Null。

>处理的办法就是清理代码,找到忘记把引用置Null的地方,把引用置Null。
很多书籍上都是这么说,其实这没有任何用处。

处理好Java内存泄漏,还是归结到要深刻掌握对象的生命周期,从对象设计思想上入手,参考这个帖子:
java的new真的给我们带来了麻烦吗?
http://www.jdon.com/jivejdon/thread/33823.html

内存泄露就是堆区数据结构(对象)使用完后没有回收
一般存在的有使用本地代码(C)的内存泄露, 比如你看到的大量的.close方法就是为了回收这些产生的
还有就是看jvm的GC工作方式,使用引用记数的可能会出现循环记数,这也导致内存结构不能有效回收。 如果是这样的话就要手动打破回环了~~

内存泄露就是堆区数据结构(对象)使用完后没有回收
一般存在的有使用本地代码(C)的内存泄露, 比如你看到的大量的.close方法就是为了回收这些产生的
还有就是看jvm的GC工作方式,使用引用记数的可能会出现循环记数,这也导致内存结构不能有效回收。 如果是这样的话就要手动打破回环了~~