从虚拟机视角谈 Java 应用性能优化
2010-07-15 00:00:00 来源:WEB开发网核心提示: 标记清除整理算法,综合上两种算法的优点,从虚拟机视角谈 Java 应用性能优化(6),先标记活跃对象,然后将其合并成较大的内存块,参数选项不尽相同,IBM J9 虚拟机在 IBM 的从移动设备到企业解决方案中广泛的被使用,代的划分:年轻代:新创建的对象分配在此,研究表明
标记清除整理算法,综合上两种算法的优点,先标记活跃对象,然后将其合并成较大的内存块。
代的划分:
年轻代:新创建的对象分配在此,研究表明,大部分程序所产生的对象都在此消亡,几乎所有的收集器为年轻代使用复制算法,年轻代又被划分为 1 个伊甸园区和 2 个存活区用来实施复制算法;
年老代:从年轻代存活下来的对象被复制到年老代,主要实施标记清除或标记清除整理算法;
持久代:装载的类数据和信息存储于此,无可消亡对象。
Java 虚拟机都提供了相应的选项来设置各个代所占用区的大小,无论是 Java EE 的服务器应用,还是 Java SE 桌面应用或产品,都需要经过对运行时对象创建和消亡状态的分析,进行这些选项的合理设置,才能获得较好的性能提升,毕竟垃圾收集是一项耗时的工作。读者可以进一步深入研究相关的虚拟机选项,为自己的应用程序设置优化的数值。
垃圾收集按频率可分为:
次收集(Minor Collection):频繁发生在年轻代,收集快速消亡的对象;
主收集(Major Collection):年轻代和年老代的全范围收集,频率很低。
垃圾收集运行时,同一个 CPU 上的所有其它线程都将会被阻塞,所以对于 Java 应用程序来说,整个世界似乎停滞了,当整个标记、清除、整理周期完成后,所有应用程序线程得以继续,许多 JVM 实现的垃圾收集机制对多 CPU 的机器环境进行优化,通过同步来实现垃圾收集线程和应用程序线程的并发,使程序获得很好的总体性能。
设置虚拟机参数
通过设置虚拟机参数来配置垃圾收集器的行为和堆中不同区的大小分配。不同虚拟机的实现,参数选项不尽相同。IBM J9 虚拟机在 IBM 的从移动设备到企业解决方案中广泛的被使用,本文关于虚拟机选项参数的设定均基于 IBM 的 J9。
更多精彩
赞助商链接