● 摘要
Java语言为用户提供了自动内存管理机制,但是当前运行Java程序的大型服务器中仍然存在着内存泄漏问题,而且这类问题通常并不容易被发现,它会随着服务器的运行逐渐泄漏更多的内存,直到整个服务器的内存被耗尽程序抛出outOfMemory异常而结束。 这是由于当前的垃圾回收算法和内存管理机制对于部分系统不再访问但是又不会被释放的对象缺乏甄别和管理能力,此部分对象也被称为“冷对象”。本文首先针对Java虚拟机(JVM)内存泄漏问题进行研究,介绍了当前Java虚拟机中采用的内存管理和垃圾回收技术,接着研究了国内外对Java内存泄漏问题的研究现状,以及当前已有软件系统针对Java内存泄漏检测工具的实现机制。本课题在开源虚拟机实现Harmony的基础上,通过改造其中的内存垃圾收集模块GC,实现了一个对JVM内存堆中所有对象进行在线监控的系统。该系统可以在JVM运行过程中对所有对象,包括申请和已释放的对象,进行在线监控,从对象的生存周期和移动轨迹出发,界定出冷对象的范围。文中对Harmony系统中对象分布、对象方法指针以及垃圾回收器实现细节等做了详细的阐述,在此基础上介绍了虚拟机代码插桩和对象监控器的设计与实现。此外,文中还对冷对象的预测与管理方法进行了初步探索。最后本文对监控系统做了性能测试,讨论了影响性能的原因,对下一步的工作做了展望。
相关内容
相关标签