【编者按】
Java虚拟机(JVM)及垃圾收集器(GC)负责管理大多数的内存任务,但是Java应用系统中还是有可能出现内存泄漏。事实上,OOM之类的现象在大型项目中也是一个常见的问题。避免内存泄漏的第一步是要弄清楚它是如何发生的,然后对症下药。
【正文】
Java虚拟机(JVM)及垃圾收集器(GC)负责管理大多数的内存任务,但是Java应用系统中还是有可能出现内存泄漏。事实上,OOM之类的现象在大型项目中也是一个常见的问题。避免内存泄漏的第一步是要弄清楚它是如何发生的,然后对症下药。
那究竟是什么导致了 Java 程序中的内存泄漏呢?难道 Java 虚拟机的垃圾收集器不应该管理未使用的内存吗?是的,它会进行管理,但是垃圾收集的对象只能是不再被引用的对象。但是,某些不再需要的对象,却在系统的某个地方仍在引用它,这样就不能对这些对象进行垃圾收集,在日志中的大量String对象的生成以及编写Java代码时的一些常见的内存泄漏陷阱等等都会造成内存泄漏,但是要在开发阶段完成找出造成泄漏的代码是非常困难的。
在大型企业系统中,Java代码中的内存泄漏是常见而且难于解决的问题。这
下一页:阅读《Java性能调优工具“JRMC”的介绍》的全文