PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kann man die Java VM Size innerhalb einer Applikation setzen?


Senior Sanchez
2006-04-16, 13:21:21
Hi,

Frage steht ja schon im Topic, aber noch kurz zur Erläuterung.

Ich weiß nicht auf was für einem Rechner meine Java Applikation laufen wird und kann demzufolge kein Startscript nutzen das die -Xmx etc. Angaben setzt.
Ich möchte dagegen den Nutzer konfigurieren lassen per Dialog, wieviel Speicher sich die VM genehmigen kann, nur dazu muss ich aus einer Applikation heraus die VM Größe bzw. Heap Größe der VM setzen können.

Ich glaube fast, dass das nicht gehen wird, aber vllt hat ja jemand noch ne Idee.

HellHorse
2006-04-16, 15:14:00
Sobald die VM schon läuft ist es schon zu spät, aber zu kannst ja selbst ein startup script schreiben, dass ein Konfigurationsfile liest und dann die VM startet. Das kannst du sogar in Java machen (Runtime.execute).
Idealerweise sollte sich aber der User nicht mit solchen Kram rumschlagen müssen.

MeLLe
2006-04-16, 15:16:44
Du könntest doch das Startscript, welches deine Anwendung startet, über den Konfigurationsdialog der Anwendung selbst verändern. Sprich der User stellt den Wert für -Xmx in deiner Anwendung ein und diese verändert ihr eigenes Startscript entsprechend. Dann noch ein Hinweis á la "Änderungen werden erst nach einem Neustart der Anwendung gültig." und gut ist =)

Edit: da war ich knapp zu langsam ;)

Senior Sanchez
2006-04-16, 18:36:39
Stimmt so kann ichs machen. Ich habe mir jetzt aber noch was wesentlich einfacheres überlegt ;)

Ich erstelle einfach mehrere Start-Skripte, die die Applikation eben mit verschiedenen Xmx Angaben aufrufen können und der Nutzer klickt dann eben die richtige für sich an. Also meinetwegen ein Script mit Xmx64M, ein anderes mit Xmx128M etc.
Son großen Aufwand wollte ich insgesamt aber auch nicht betreiben, deshalb werde ich es wohl so machen. ;)


PS @HellHorse: Ich finde diese Lösung auch etwas Banane, aber es geht für meinen Zweck glaube ich net einfacher ohne das Design gründlich zu verhunzen. Ich brauche massiv Objekte die gespeichert und alle im Speicher behalten werden müssen (zwecks nachträglicher Analyse) und ich will nicht das die Applikation dann wegen nem OoM abstürzt.
Gut, ich könnte die Daten jetzt per MemoryMappedIO auf die Platte schreiben, aber das kommt der Performance auch nich zu gute und übertreiben mag ich es für die kleine Anwendung auch nicht.