Kann man VM-Parameter ändern/ändern/hinzufügen, nachdem die JVM bereits geladen ist (läuft)? Wenn ja, wie kann ich es tun?JVM-Parameter zur Laufzeit setzen
Antwort
Für Eigenschaften, die Sie über das Flag -D
in der Befehlszeile festlegen, möchten Sie System.setProperty. Zum Beispiel:
System.setProperty("propname", "hello world");
// ... later ...
String value = System.getProperty("propname");
Update:
Sie können nicht aktivieren dynamisch Debuggen, aber Sie können das Debuggen beim Start ermöglichen aber einen Debugger später befestigen. Mit den folgenden Funktionen können Sie den Port 12345 abhören und das Programm sofort starten (über suspend=n
). Dann können Sie einen Debugger anhängen, wenn/falls es nötig ist, den Debugger zu trennen, es später erneut befestigen usw.
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345
Natürlich schmerzt diese Leistung auch dann, wenn der Debugger nicht angebracht ist, so dass nur es funktioniert gut in dev/test code, nicht production. Dafür möchten Sie protokollieren, z.B. log4j.
Eine kurze Antwort ist, dass Sie VM-Parameter zur Laufzeit nicht ändern können. Die Runtime-Klasse bietet einige Optionen wie max Speicher. Die Hauptparameter wie maximaler Speicher sollten nur durch einen Admin-Typ festgelegt werden, der die Verwaltung von Ressourcen ermöglicht, wenn mehrere JVMs auf einem Computer vorhanden sind. Wenn man es einer JVM erlaubt, gierig zu werden und viel mehr zu fragen, als sie zugeteilt wurde, würde diese Einschränkung aufgehoben werden.
Die java.lang.Runtime-Klasse kann Ihnen die maximale Speichereinstellung mitteilen, sie kann jedoch nicht geändert werden. – tgdavies
@tdavies Ich weiß, und ich gab den Grund, warum dieser Wert unveränderlich ist. –
-1 Es ist möglich, VM-Parameter eine Laufzeit zu ändern! Sehen Sie sich 'com.sun.management.HotSpotDiagnosticMXBean # setVMOption (String, String)' an – Chriss
- 1. NHibernate.Search - Indexverzeichnis zur Laufzeit setzen
- 2. SSIS Variable zur Laufzeit setzen
- 3. DataContracts DataMember-Attribute zur Laufzeit setzen?
- 4. JPA-Kaskadenoptionen zur Laufzeit
- 5. Hibernate-Konfiguration zur Laufzeit
- 6. Setzen Sie die Flex-Komponentenbreite zur Laufzeit auf 100%?
- 7. Entity Framework-Verbindungszeichenfolge zur Laufzeit in C# setzen
- 8. Maximale Anzahl von Threads zur Laufzeit auf numpy/openblas setzen
- 9. Setze Klasseneigenschaft zur Laufzeit
- 10. Android: Anfrage zur Laufzeit
- 11. Übersteuerung zur Laufzeit __setattr__
- 12. Überschreiben von __setattr__ zur Laufzeit
- 13. MasterPageFile zur Laufzeit wechseln
- 14. Einstellung "Modal" zur Laufzeit
- 15. create Tframes zur Laufzeit:
- 16. Apportieren Kontextkonfiguration zur Laufzeit
- 17. ändern Etikettenposition zur Laufzeit
- 18. Speichern xamlx zur Laufzeit
- 19. iPhone Ansichten zur Laufzeit?
- 20. Aufrufmethode zur Laufzeit
- 21. Animation zur Laufzeit hinzufügen
- 22. Ninject zur Laufzeit verbindlich
- 23. Vtable-Änderungen zur Laufzeit
- 24. Bean zur Laufzeit ersetzen
- 25. Klassenimplementierung zur Laufzeit (Java)
- 26. QRadioButtons zur Laufzeit hinzufügen
- 27. Schriftart ändern zur Laufzeit
- 28. Hibernate-Datenbankkennwort zur Laufzeit
- 29. Änderung TopMost zur Laufzeit
- 30. Empty ControlCollection zur Laufzeit
Was ist mit -X Nicht-Standard-Optionen? vor allem -Xdebug und einige andere Debugging-Flags? – Guy
Ich habe ein Update mit Debugging-Informationen hinzugefügt. –
Danke dir Harold! – Guy