jar mit Befehl zur Vergrößerung des VM-Speichers

Status
Nicht offen für weitere Antworten.

Thunderhit

Mitglied
meine java Anwendung braucht mehr Speicher als standardmäßig, nutze daher den Befehl -mx320m damit sie reibungslos funktioniert, nur will ich die normal wie es der Sinn der jar ist, sie über den Doppelklick starten. Muss ich dann -mx... in die manifest hinzufügen, damit zusätzlicher Speicher zu Verfügung steht? Wenn ja wie genau? Denn jedesmal das über die Console zu machen ist nicht Sinn der Sache, vor allem wenn man die mal jemand anders gibt.
 
Geht leider so einfach nicht. Am einfachsten wird es sein ein Startskript beizulegen (.bat für Windows, bash Script für Linux), dass den entsprechenden Parameter setzt.

Im Manifest kannst du das leider nicht festlegen, da das erst nach dem Starten der VM gelesen wird.

Alternativ könntest du im JAR File einen Java Programm starten, dass nichts anderes macht, als dein eigentliches Java Programm aufzurufen. Allerdings hab ich davon keine Ahnung, wie man das sauber plattformunabhängig hinbekommt.
 
Da bei ner bat das Problem ist, dass das Fenster die ganze Zeit vorhanden ist versuchte ich mich an der jar startet jar Methode. Nur so richtig klappt es nicht, wollte es in einem neuen Thread mit

Desktop.getDesktop().open(new File("java -jar -mx320m"+location));

starten, aber er findet es nicht, ohne das im "" funktioniert es, nur wie starte ich die jar mit zusätzlichen parametern?
 
Ah, Fehler beim eintragen hier, aber leider nein, hab die Zeile auch ohne variable geschrieben
"java -jar -mx320m test.jar", selbes Ergebnis...
 
So evtl.!?

Code:
public class StartJar {

	public static void main(String[] args) throws IOException{
		
		Runtime.getRuntime().exec("javaw -jar -mx320m Test.jar");
	}
}

Wäre dann auch vor Java 6 möglich!

(ungetestet)
 
Joa, eigentlich schon, aber ich hab halt mal die Parameter vom Threadsteller übernommen 😉 .
 
hat funktioniert, danke

edit: wenn ich mein Programm über die jar starte geht alles normal, nur wenn ich es über Alt+F4 beende bzw. über das Kreuz, dann ist der java Prozess noch im prozess explorer zu sehen und verbraucht noch die selbe Menge speicher wie vor dem schließen. Woran liegt das? Ich dachte dass der Prozess bzw. die Anwendung aus dem Speicher entfernt wird wenn sie geschlossen wird?
Ich habe eine SWT Oberfläche und lade recht große Objekte in den Speicher, daher der zusätzliche, nur wenn ich auf das Kreuz geh müsste der doch das alles beenden?!
 
Naja, nur weil die Benutzeroberfläche geschlossen wird, heißt das noch lange nicht, dass das Programm nicht mehr läuft! Von SWT hab ich keine Ahnung, aber für ein JFrame in Swing gibts sowas wie

Code:
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
Mal am Rande:
Wenn man in der Batchdatei "javaw.exe" verwendet, bleibt auch kein DOS Box Fenster offen.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben