Wie festlegen der maximalen JVM-heap-Größe "-Xmx" für die Ausführung einer Anwendung mit "ausführen" - Aktion im SBT?
Meine Anwendung keinen großen Daten-arrays verarbeiten und braucht mehr Speicher als JVM gibt standardmäßig. Ich weiß, in Java angegeben "-Xmx" - option. Wie kann ich einstellen SBT-up zu verwenden, insbesondere die "-Xmx" - Wert zum ausführen einer Anwendung mit "ausführen" - Aktion?
InformationsquelleAutor Ivan | 2010-10-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
javaOptions += "-Xmx1G"
der Inhalt meiner post scheint sehr wichtig für Sie.
ja, es ist Arne, ich hoffe, Sie nicht mind.
Beachten Sie, dass
javaOptions
nur mit Wirkung für die Gabel-JVMs (siehe scala-sbt.org/0.13/docs/Forking.html)Hinzufügen
fork in run := ture
ermöglichtjavaOptions
InformationsquelleAutor Arne
Für die Gabel-Prozesse, sollten Sie schauen, zu Bauen.scala
Ändern der java-Optionen für die Gabel-Prozesse, die Sie angeben müssen Sie in den Build ein.scala (oder was auch immer Sie haben Ihren Namen bauen):
Dieser wird Ihnen die korrekten Optionen ohne änderung JAVA_OPTS weltweit und wird put custom JAVA_OPTS in einem sbt erwirtschaftete start-Skript
Für nicht gegabelt Prozesse, es ist sehr bequem, legen Sie die Konfiguration über
sbtopts
odersbtconfig
je nach sbt-version.Seit sbt 0.13.6
.sbtconfig
ist veraltet. Ändern/usr/local/etc/sbtopts
entlang dieser Linien:Sie können auch erstellen Sie eine
.sbtopts
- Datei im Stammverzeichnis Ihres SBT-Projekt mit der gleichen syntax wie in der/usr/local/etc/sbtopts
- Datei. Das Projekt ist eigenständig.Bevor sbt 0.13.6 Sie können die Optionen in .sbtconfig für nicht gegabelt Prozesse:
Überprüfen, wo sbt:
Blick auf den Inhalt:
Stellen Sie die richtige jvm-Optionen um zu verhindern, dass OOM (sowohl regelmäßige und PermGen):
Wenn Sie festlegen möchten SBT_OPTS nur für den aktuellen Lauf von sbt, die Sie verwenden können
env SBT_OPTS=".." sbt
wie vorgeschlagen von Googol-Shan. Oder Sie können die option Hinzugefügt, Sbt 12:sbt -mem 2048
. Das wird dann unhandlich für längere Listen von Optionen, aber es könnte helfen, wenn Sie verschiedene Projekte mit unterschiedlichen Bedürfnissen.Beachten Sie, dass CMSClassUnloadingEnabled im Konzert mit UseConcMarkSweepGC hilft, die PermGen space sauber, aber je nachdem, was frameworks, die Sie verwenden, müssen Sie möglicherweise eine tatsächliche Leck auf der PermGen, die schließlich erzwingt einen Neustart.
vielleicht alles etwas anders in 0.13? Ich werde aktualisieren, die Antwort, wenn ich etwas in Bauch (kann eine Weile dauern), lassen Sie mich wissen, wenn Sie es herausfinden in der Zwischenzeit.
sehen Piotrek die Antwort von unten und mein update.
FYI Sie können auch eine
.sbtopts
- Datei im Stammverzeichnis Ihres SBT-Projekt mit der gleichen syntax wie in der/usr/local/etc/sbtopts
- Datei. Dies macht Ihr Projekt selbst enthalten, die sehr nützlich sein kann, in CI-Situationen.Coole Ergänzung @AgeMooij!
InformationsquelleAutor
Im sbt version 12 aufwärts es gibt eine option für diese:
Not a valid command: mem (similar: set)
InformationsquelleAutor scrapcodes
Wenn Sie laufen sbt auf linux-shell, die Sie verwenden können:
Dies ist meine meist benutzte Befehl zum ausführen meiner sbt-Projekt.
Hmm, das hat bei mir nicht funktioniert! Ich brauchte die
override def fork
Lösung vor. (sbt 0.7.7)es ist möglich, dass Ihr sbt-Datei gibt an, seine eigenen JAVA_OPTS, in dem Fall werden diese überschrieben. Sie können Sie dann einfach direkt ändern Sie Ihre sbt-Datei entweder zu löschen, die -Xmx-flag oder schalten Sie die gewünschte maximale heap-Größe.
InformationsquelleAutor Googol Shan
.sbtconfig
ist veraltet, beginnend mit SBT0.13.6
. Stattdessen habe ich konfiguriert diese Optionen in/usr/local/etc/sbtopts
in der folgenden Weise:Yup, das ist der richtige Weg, es zu tun.
-J-Xss1M
ist ein bisschen niedrig für große Fall-Klassen, 4M scheint sicherer zu sein.InformationsquelleAutor omnomnom
Gibt es eine Möglichkeit, die ich kenne. Setzen Sie die Umgebungsvariable JAVA_OPTS.
Ich habe nicht gefunden, einen Weg, dies zu tun als Befehls-parameter.
InformationsquelleAutor Synesso
Verwenden JAVA_OPTS für die Einstellung mit der Umgebungsvariable.
- J-X-Optionen zu sbt für die einzelnen Optionen, z.B. -J-Xmx2048 -J-XX:MaxPermSize=512
Neuere Versionen von sbt haben "-mem" - option.
InformationsquelleAutor Brett
Den
javaOptions += "-XX:MaxPermSize=1024"
in unserem build.sbt als verwiesen wird, die von @iwein oben gearbeitet für uns, wenn wir sahen eine java.lang.OutOfMemoryError geworfen, während der Ausführung Specs2 tests durch sbt.InformationsquelleAutor Pete Neisen
Wird die Umgebungsvariable _JAVA_OPTIONS, die festgelegt werden muss.
Sobald Sie set _JAVA_OPTIONS, und wenn Sie sbt, sbt, wird die Meldung mit JAVA_OPTIONS und die Werte.
Alternativ können Sie javaOption in der sbt oder .scala-Datei
e.g
Vom sbt-shell Sie ausführen konnte zeigen, javaOptions zu sehen, wie die Werte eingestellt sind.
InformationsquelleAutor Sajive Kumar
Dieser legt die JVM-Optionen für tests. Funktioniert auch mit jvm-Verzweigung (
fork in Test := true
).build.sbt
?Überall, wenn Sie einen 1-Modul-Projekt. Die Reihenfolge der Definitionen in der Regel nicht die Materie im SBT. Wenn Sie mehrere Module haben, geben Sie diese entweder auf einige von Ihnen oder, wenn Sie wollen, weltweit über
javaOptions in ThisBuild += "-Xmx1G"
oderjavaOptions in (ThisBuild, Test) += "-Xmx1G"
InformationsquelleAutor VasiliNovikov
sbt können Sie die Liste der JVM-Optionen, die Sie ausführen müssen, um Ihr Projekt auf eine Datei namens
.jvmopts
in die Wurzel Ihres Projekts.
dann fügen Sie die java-Optionen, die Sie möchten
es ist getestet und funktioniert in windows 10
https://www.lagomframework.com/documentation/1.4.x/scala/JVMMemoryOnDev.html
InformationsquelleAutor Ar maj