Tag: 转义分析

在JVM上启用了逃逸分析的经验

我刚刚尝试在jdk6-u18 VM(在solaris上)启用了-XX:+DoEscapeAnalysis选项,并且遇到了相当令人失望的经历。 我正在运行一个scala应用程序,它有很多演员(其中有20,000个)。 这是垃圾创建的秘诀! 通常,应用程序可以使用256Mb的堆运行,但会产生大量垃圾。 在稳定状态下: 在GC中花费10%的时间 在 150Mb的垃圾然后获得GC 我认为转义分析可能会有所帮助,所以我启用了该选项并重新运行了应用程序。 我发现应用程序变得越来越无法清除它收集的垃圾,直到它似乎最终花费了整个时间来做GC并且应用程序在其完全分配时“扁平化”。 在这一点上,我应该说应用程序没有抛出我所期望的OutOfMemoryError 。 也许JConsole (我用来执行分析)没有正确显示带有此选项的GC统计数据(我不相信)? 然后我删除了该选项并重新启动,应用程序再次变为“正常”! 任何人都知道可能会发生什么?