Ich denke über die Ausführung mehrerer Instanzen der gleichen Java-Binärdatei (eine Socket-Anwendung) mit verschiedenen Konfigurationsdateien (als Befehlszeilenparameter). Wird die Situation von der JVM korrekt gehandhabt? Mit anderen Worten: Wenn ich keine gemeinsamen Ressourcen habe (Dateien, die gesperrt werden können usw.), wird dieser Ansatz Probleme verursachen? Wenn ja, welche Dinge muss ich vorsichtig sein?Kann ich mehrere Instanzen einer Java-Klassendatei ausführen?
Antwort
Wenn Sie mehrere Instanzen von Java über die Befehlszeile starten, erhalten Sie mehrere laufende JVMs (eine pro Instanz).
Wenn keine gemeinsamen Ressourcen vorhanden sind, sollten Sie überhaupt keine Probleme haben.
Kein Problem damit. Tatsächlich finde ich den umgekehrten Fall ein bisschen nervig - dass es keine (einfache) Möglichkeit gibt, die Anzahl der startbaren Instanzen innerhalb desselben Computers zu begrenzen.
Wie Matthew bereits sagte, solange keine gemeinsamen Ressourcen vorhanden sind, sollten wir keine Probleme sehen.
Um ein bisschen mehr hinzuzufügen, ist JVM wie ein Container, der eine Ausführungsumgebung für ein Java-Programm und eine JVM bietet, die jedes Mal erstellt wird, wenn wir Java über die Befehlszeile aufrufen.
Wenn Sie viele Instanzen haben dann können Sie ein Problem mit einem übermäßigen Speicherverbrauch haben und langsam mal starten. Ein Großteil der JRE wird geteilt, aber nicht alles und nicht im Allgemeinen Anwendungscode und Ressourcen. Einige JREs versuchen dies zu beheben, zum Beispiel neuere Versionen des kompilierten Anwendungscodes für IBM JRE 6.
Wenn der gesamte Code gut geschrieben ist (keine veränderbaren statischen Variablen (einschließlich Singletons)), sollte es kein Problem sein, einen einzigen Prozess zu verwenden.
- 1. Kann ich mehrere Instanzen desselben Windows-Dienstes problemlos ausführen?
- 2. Mehrere Instanzen einer Bean
- 3. Mehrere mysql-Instanzen in mysql ausführen
- 4. Kann CasperJS mehrere Instanzen im selben Prozess ausführen?
- 5. Wie kann ich mehrere Instanzen einer Anwendung mit launchd starten?
- 6. Wie mehrere Instanzen einer Generatorfunktion
- 7. Kann ich mehrere Catch-Blöcke ausführen?
- 8. Kann nicht mehrere Instanzen von PowerPoint erstellen
- 9. Wie kann ich im Frühling mehrere Sessionfactory-Instanzen definieren?
- 10. Mehrere Instanzen einer GTK-Anwendung verhindern
- 11. C++, mehrere Instanzen einer DLL, Singleton
- 12. Mehrere Instanzen einer einzelnen MEF DLL
- 13. Mehrere Instanzen eines Python-Programms effizient und wirtschaftlich ausführen?
- 14. Mehrere Instanzen von RStudio in einem Webbrowser ausführen
- 15. Mehrere QMainWindow-Instanzen?
- 16. Spring DispatcherServlet Mehrere Instanzen
- 17. Beschränken Sie mehrere Instanzen einer Anwendung
- 18. Kann ich mehrere Instanzen eines RequireJS-Moduls haben?
- 19. Mehrere Redis-Instanzen
- 20. JTable mehrere Instanzen
- 21. Tomcat mehrere Instanzen gleichzeitig
- 22. Wie finde ich EC2-Instanzen, die einen bestimmten AMI ausführen?
- 23. Mehrere JFrame-Instanzen
- 24. Mehrere Instanzen von ViewModel
- 25. Mehrere Redmine Instanzen Best Practices
- 26. Angular - mehrere $ http "Instanzen"
- 27. Mehrere Facebook-Kommentare Instanzen
- 28. Mehrere MPMoviePlayerController Instanzen
- 29. Mehrere MediaCodec-Instanzen
- 30. Aus welchen Gründen könnte eine Instanz einer Linux-Anwendung mehrere Instanzen von sich selbst ausführen?
Es gibt nur eine Verbindung zu einem ServerSocket, die nachfolgenden Starts werden nicht in der Lage sein, eine Verbindung zu demselben Server-Socket herzustellen. – Siddharth
... funktioniert, solange kein anderes Programm den gleichen Port verwendet. In diesem Fall können Sie nicht einmal eine Instanz Ihres Programms starten :) –
jetzt ist das reparierbar, und eine entfernte Chance. es ist zumindest besser als "kein einfacher Weg" – Siddharth