通過兩個不同的命令行調用java是否涉及兩個不同的JVM或兩個相同JVM的獨立實例。JVM的實例
Q
JVM的實例
8
A
回答
21
JVM是Java虛擬機,它是加載類(代碼)和共享對象(數據)的內存空間。 JVM相當於一個操作系統進程。
當您在命令行中輸入java...
時,您正在執行一個獨立的進程,用於加載內存中的Java類,來自Java和您的基類(來自.class文件或指示的.jar)。
另一個java...
命令將使用自己的內存加載一個不同的進程,並自行加載類。
實例詞混淆:當你說'兩個相同的JVM實例'。通常將一個JVM的實例表示爲一個單獨的進程,即一個加載的獨立JVM。如果您說:兩個進程正在運行JVM 1.5,那麼它們是相同的JVM,但它們是不同的進程,不同的「實例」,在所有意義上都是獨立的。
Web應用程序混淆: Web應用程序(例如)只是一堆實例化的類和對象,在Web服務器中出現一些URL。您可以使用10個不同的應用程序啓動Tomcat - 即10個不同的類和對象,每個類都有不同的請求,但實際上它們共享相同的內存空間(OS進程)。一個webapp不能觸及其他webapp的對象,因爲沒有人給它提供對其他對象的引用(並且類以某種方式被隱藏,但是這是另一個叫做class-loading的故事)。
1
1
1
如果您從它們的JDK/JRE 1.6版本的JDK/JRE版本1.6開始,使用相同的源路徑兩次啓動Sun的java.exe,那麼您將獲得兩個獨立且不同的JVM實例。除非通過應用程序對其進行配置,否則它們之間不會共享。如果你想要兩個不同的JVM運行,你必須從一個位置啓動一個類型的java.exe(比如1.5),並從另一個位置啓動一個java.exe(1.6版本)。
相關問題
- 1. 跨JVM或應用程序實例或Tomcat實例的單身
- 2. 在新實例中運行JVM或暫停JVM一段時間
- 3. AppEngine快速殺死JVM實例
- 4. JVM getObjectSize示例
- 5. Google Cloud Dataflow中的每個GCE實例中實例化了多少個JVM?
- 6. Docker和JVM,是否爲每個docker實例創建一個新的JVM安裝?
- 7. JVM實現JRE
- 8. 存儲在JVM中的對象的實例變量在哪裏?
- 9. 實例的大小在不同的JVM不同
- 10. DataNucleus的JDO在同一個JVM中的多個實例
- 11. JVM HEAPDUMP:內存在的「java.util.concurrent.ConcurrentHashMap中的$段一個實例積累
- 12. 如何爲從eclipse執行的Tomcat實例設置JVM選項
- 13. 一個JVM中兩個JRuby實例之間的共享對象
- 14. 在多個JVM上配置ActiveMq偵聽器的多個實例
- 15. 什麼是導致替代JVM語言的實際用例?
- 16. 強制applet加載到相同的JVM實例中?
- 17. 黃瓜JVM硒例如
- 18. 在同一個jvm中一次運行多個spark實例的最佳實踐?
- 19. java在GAE環境中與多個JVM實例同步
- 20. 在使用Selenium,TestNG和Cucumber-JVM時共享一個WebDriver實例
- 21. 爲什麼在Java EE Application Server中使用單個JVM實例?
- 22. 有沒有辦法在JVM中關閉Hazelcast實例?
- 23. Eclipse - 這個Java實例不支持32位JVM
- 24. Orientdb:這個java實例不支持64位JVM
- 25. 在JVM中有多少個類文字實例可以存在?
- 26. 機庫,錯誤:此Java實例不支持32位JVM
- 27. ConcurrentLinkedQueue $節點實例增長和JVM引發OOM
- 28. 在多個JVM上維護單個實例
- 29. java如何確保每個JVM只有一個枚舉實例
- 30. 在單個JVM實例中部署Clojure應用程序
你知不知道這兩個答覆都是等價的? – Riduidel 2010-09-06 14:53:52
你應該更具體。 JVM對你有什麼不同,是什麼?你要求什麼區別? – splash 2010-09-06 15:01:02