Einstellung -XX: + DisableExplicitGC in der Produktion: Was könnte schief gehen?

gerade hatten wir eine Besprechung, um einige performance-Probleme in eine web-Anwendung, die verwendet wird, zu berechnen Versicherung Preise. Die Berechnungen implementiert sind, in ein C/C++-Modul, das verwendet wird, in andere software-Pakete. Verfügbar als webservice, ein Java-wrapper implementiert wurde, stellt eine XML-basierte Schnittstelle und ruft die C/C++-Modul über JNI.

Messungen zeigten, dass mehrere Sekunden verbrachte er auf jede Berechnung innerhalb der Java-Teil. Also meine erste recomodation zu ermöglichen, garbage collection logging in der VM. Wir konnten sehen, dass viele um-die-Welt voller GCs gemacht wurden. Reden, die Entwickler der java-Teil erzählte uns, Sie habe eine System.gc() bei mehreren Gelegenheiten ", um sicherzustellen, dass der Speicher nach der Freigabe verwenden".

OK, ich werde nicht näher auf diese Aussage irgendwie weiter... 😉

Wir dann fügte genannten -XX:+DisableExplicitGC zu den VMs Argumente und reran die tests. Dies machte etwa 5 Sekunden pro Berechnung.

Da wir Sie nicht ändern Sie den code durch Strippen alle diejenigen System.gc() ruft an dieser Stelle in unserer release-Prozess, wir denken über das hinzufügen von -XX:+DisableExplicitGC in der Produktion, bis eine neue Jar-Datei erstellt werden kann.

Ist jetzt die Frage: könnte es da irgendein Risiko dabei? Über die einzige Sache, die ich denken kann, ist tomcat mit System.gc() intern, wenn die Versetzung, aber das ist nur eine Vermutung. Gibt es irgendwelche anderen Gefahren vor?

InformationsquelleAutor der Frage Axel | 2012-10-11

Schreibe einen Kommentar