2009-05-01 11 views
9

Wenn Sie ein Programm über die Befehlszeile ausführen, können Sie java -Xms -Xmx verwenden, um die Heap-Größen anzugeben. Wenn das Programm durch Doppelklicken auf eine .jar-Datei ausgeführt wird, gibt es eine Möglichkeit, mehr Heap als den Standard zu verwenden?Weisen Sie einem Java-Jar mehr Heap-Speicher zu

Antwort

8

Nein. Deshalb mache ich oft eine .bat oder .sh-Datei mit diesen Parametern und direkte Benutzer, um es statt der .jar auszuführen. Leider ist es ein wenig hässlich, ein Eingabeaufforderungsfenster zu öffnen, aber das kann nicht geholfen werden.

Als Nebeneffekt, wenn Ihre Anwendung einfriert, können Sie Benutzer anweisen, pause in die Batch-Datei (oder do it yourself) zu setzen, und dann können Sie jede Stapelverfolgung, die auftritt.

Edit: Sie könnten auch eine ausführbare Wrapper wie JSmooth oder Launch4J anstelle einer Batch-Datei verwenden. Sie würden jedoch einige plattformübergreifende Kompatibilität verlieren.

+0

@mmyers: Verflucht deine schnellen kleinen Finger! Bewerte mich um 54 Sekunden! – Welbog

+0

Entschuldigung, ich sehe, dass Sie damit beschäftigt waren, die Frage zu bearbeiten. (Ich denke, das ist das erste Mal, dass jemand meine schnellen kleinen Finger verflucht hat ...) –

+2

Sie könnten auch etwas wie JSmooth verwenden: http://jsmooth.sourceforge.net/ – millimoose

5

Anstatt direkt auf die .jar-Datei doppelzuklicken, können Sie eine Stapeldatei verwenden, in der java -jar -Xms -Xmx your_file.jar ausgeführt wird. Aus der Sicht des Benutzers ist es das gleiche, aber es gibt Ihnen mehr Kontrolle über den tatsächlich ausgeführten Befehl.

+0

+1 für die gleiche Antwort, die ich tat. :) –

2

Sie können JSmooth oder einen ähnlichen Wrapper verwenden, der eine EXE-Datei erstellt, die die JVM mit den erforderlichen Parametern startet. Auf diese Weise können Sie vermeiden, dass eine .bat-Datei und ihr Konsolendialogfeld vorhanden ist. Noch ein weiterer Weg besteht darin, das eigentliche Programm im neuen Prozess mit Runtime.exec oder ProcessBuilder zu starten.

5

Sie können das Jar erneut mit Runtime.getRuntime() .exec() mit den gewünschten Optionen starten lassen. Das jar kann mehr als eine main() -Methode (in verschiedenen Klassen) enthalten und Sie können den anderen über eine exec() aufrufen.

+0

Eine weitere gute Option (obwohl es nicht so einfach ist herauszufinden, wieviel Speicher verfügbar ist). +1 –

Verwandte Themen