Ich aktualisiere einen Code von 2.9.1 auf 2.10.0 (und ich habe 2.10.1 mit den gleichen Ergebnissen versucht), in beiden Fällen SBT 0.12.1.
Wenn ich sbt clean compile
in der Befehlszeile ausführen, werden beide nach etwa 250 Sekunden abgeschlossen.
Wenn ich sbt
jedoch interaktiv benutze und wiederholt clean
und dann compile
eintrage, werden meine 2.9-Kompilierungen schneller, aber meine 2.10-Kompilierungen werden 10x langsamer .
Wenn ich eine Heap-Größe von 768m nutze, läuft 2.10 beim dritten Kompilieren der Speicher aus. Mit einer Heap-Größe von 4g kann es jedes Mal kompiliert werden, aber nach der ersten Iteration immer 10x langsamer.
%Vor%Was ist der beste Weg für mich zu debuggen, um herauszufinden, was vor sich geht?
Vielen Dank für die CodeCache-Verknüpfung . Ich habe es zunächst abgelehnt, da die vorgeschlagene -XX:+UseCodeCacheFlushing
-Option keine Verbesserungen brachte, aber ich habe gerade versucht, -XX:ReservedCodeCacheSize=2g
zu benutzen, und das hat das Problem gelöst.
Weiß jemand, warum -XX:+UseCodeCacheFlushing
nicht hilft, oder einige empfohlene Werte für alle Code-Cache-Java-Optionen?
Zum Spaß, hier sind meine resultierenden Kompilierzeiten mit -XX:+HeapDumpOnOutOfMemoryError -server -XX:ReservedCodeCacheSize=2g -Xmx4g -Xss4M -XX:MaxPermSize=512M -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -XX:+CMSClassUnloadingEnabled -XX:+UseCodeCacheFlushing
Sie können zunächst einen Profiler oder Monitor anschließen, um zu sehen, was mit GC passiert. Um eine erste Vorstellung davon zu bekommen, was los ist, sollte ein Stock Tool wie JVisualVM ausreichen. Natürlich, wenn Sie YourKit haben, würde das auch gut funktionieren.
Addendum
Als leicht interessant, aber jetzt weitgehend irrelevant beiseite, habe ich kürzlich entdeckt, dass Scala 2.9.0-1 erschreckend langsam war, wenn sie Specs2-Tests kompilierte (zumindest unveränderlich). Die Umstellung auf 2.9.1 hat einen großen Unterschied gemacht. Ich habe es nur bemerkt, als ich einige Komponententests zu einem Projekt hinzufügen musste, das vorher keine hatte, und die Kompilierungszeiten wurden qualvoll. Nach einer Ahnung wechselte ich zu 2.9.1 und alles lief wieder normal.
Tags und Links scala scala-2.10