● 摘要
Java技术具有平台无关,安全,适合网络应用以及自动回收无用内存空间等良好的特性,这一方面使Java得到了广泛的应用,另一方面也付出了性能上的代价,提高Java虚拟机的性能,具有重要的意义。 垃圾收集是Java虚拟机中内存管理的重要组成部分。垃圾收集避免了内存泄露,悬挂指针等内存管理问题,但是垃圾收集也增加了程序的额外负担,使Java虚拟机在运行时会不定时的中断应用程序,进行垃圾收集工作。垃圾收集会造成应用程序不可预测的停顿,使Java技术很难应用于实时的系统,在一定程度上阻碍了Java在实时系统中的应用。 本文在分析基本垃圾收集算法,当前的实时垃圾收集算法优缺点的基础上,结合目前在多处理器结构下多处理器协同进行垃圾收集的方法,提出了一种基于多处理器平台的实时垃圾收集算法:并行半堆空间垃圾收集算法(Parallel Semi-space Collection)。该算法在通常情况下,在实时性最差的10ms时间片中,垃圾收集造成的停顿一般少于2ms,并且在空间开销上仅和堆中的可用空间块数量成正比。 该算法在一般情况下,最长停顿时间仅由根节点的数量和分布决定,在最坏情况下退化为标记—清除算法,但是可以通过调整堆空间的大小来限制最坏情况的发生,在应用程序分配内存率一定的情况下,可以完全避免最坏情况的发生。通过测试表明,在大多数情况下,PSC算法实时性优于Sun J2SE 1.6.0 JVM实时模式中的垃圾收集算法。 本文详细测试并分析了PSC算法的各项性能,在论文的最后讨论了进一步改进的方向。