Erfahrungen mit aktivierter Escape-Analyse in der JVM

Ich habe das gerade ausprobiert-XX:+DoEscapeAnalysis Option aktiviert für ajdk6-u18 VM (auf Solaris) und hatte eine ziemlich enttäuschende Erfahrung. Ich starte eine Scala-Anwendung, die ziemlich viele Schauspieler hat (20.000 von ihnen). Dies ist ein Rezept für die Erstellung von Müll!

Normalerweise kann die App mit 256 MB Heap ausgeführt, aber generiert werdenenorm Müllmengen. In seinemGleichgewichtszustand es:

verbringt 10% der Zeit in GCerzeugt in <30s> 150Mb Müll, der dann gcd wird

Ich dachte, dass die Escape-Analyse hilfreich sein könnte, also habe ich die Option aktiviert und die App erneut ausgeführt. Ich stellte fest, dass die App zunehmend nicht mehr in der Lage war, den gesammelten Müll zu beseitigen, bis es so aussah, als würde sie den Müll irgendwann ausgebendie ganze Zeit GC zu tun und die App wurde bei voller Zuweisung "flatlining".

An dieser Stelle sollte ich sagen, dass die App keinen Wurf aOutOfMemoryError das hätte ich erwartet. VielleichtJConsole (mit dem ich die Analyse durchgeführt habe) zeigt GC-Statistiken mit dieser Option nicht richtig an (ich bin nicht überzeugt)?

Ich habe dann die Option entfernt und neu gestartet und die App wurde wieder "normal"! Hat jemand eine Idee, was los sein könnte?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage