Tôi có thể chạy nhiều hơn một JVM không? Nếu có thì làm thế nào tôi có thể tìm thấy một lớp cụ thể được nạp trên JVM nào?Tôi có thể chạy nhiều hơn một JVM trên PC đơn lẻ của mình không?
Trả lời
Nó không hoàn toàn rõ ràng những gì bạn có ý nghĩa, nhưng:
- Bạn có thể có nhiều hơn một máy ảo (phiên bản/thương hiệu vv) được cài đặt trên cùng một máy
- Bạn có thể chạy nhiều hơn một
java
quá trình, cho dù cùng một phiên bản JVM hoặc các phiên bản JVM khác nhau
Trừ khi bạn đang chạy một tác nhân gỡ lỗi hoặc một cái gì đó tương tự, tôi không biết cách nào để hỏi quá trình JVM cho dù nó được nạp một lớp cụ thể hay không. Có vẻ như một chút yêu cầu kỳ lạ - tại sao bạn muốn làm điều này?
Bạn có thể chạy như nhiều JVM như bạn có thể phù hợp trên đĩa của bạn và trong bộ nhớ :)
Bất cứ khi nào bạn khởi động một ứng dụng Java, bạn đang bắt đầu đầu tiên JVM và sau đó nói với nó mà ứng dụng để chạy. Câu trả lời cho "JVM" nào là đơn giản: JVM mà bạn đã nạp ứng dụng!
Có thể thực hiện một số điều không quan tâm bí mật với trình nạp lớp sẽ chứng minh ngoại lệ cho những gì tôi vừa nói. Nhưng đó là sự thật trong trường hợp chung và phần lớn tất cả các ứng dụng.
Nhiều JRE (Môi trường thời gian chạy Java) rất có thể. Tôi làm như vậy. Vấn đề là JVM không phải lúc nào cũng chạy trên hệ thống của bạn. Nó giống như bất kỳ phần mềm nào khác. Khi bạn chạy một tệp jar, nó sẽ bắt đầu chạy.
Giá trị mặc định JRE được thiết lập trong Environment Variables như JAVA_HOME (click chuột phải máy tính của tôi -> properties -> tab Advanced -> Environment Variables)
Để chạy một file jar bạn chỉ cần chạy lệnh này:
C: \ Program Files \ Java \ j2re1.4.2_04 \ bin \ javaw.exe" -jar Myfile.jar
Bạn có thể sử dụng bất kỳ jre javaw khác để chạy một tệp jar.
Xin lưu ý rằng j2re1.4.2_04 có thể không phải là phiên bản jre của bạn.
Chỉnh sửa:
Tất cả các lớp trong tệp jar chạy trên một JVM. Như bạn có thể đoán. Xem JAVA_HOME của bạn, nó là mặc định.
Tôi có thể chạy nhiều hơn một JVM không?
Có - chỉ cần chạy 'java' quá trình
Nếu có thì làm thế nào tôi có thể tìm thấy một lớp học đặc biệt được nạp mà JVM?
Chương trình 'jps' được phân phối với SDK JAVA sẽ liệt kê tất cả các quá trình java (JVM) bị hỏng trên máy của bạn, lớp chính đang được thực thi bởi mỗi JVM và đường dẫn lớp. Bạn sẽ phải xem các lọ hoặc các lớp nào nằm trên mỗi classpath để tìm ra nếu một lớp được nạp hay không.
thử chạy
jps -mlvV
và xem những gì bạn nhận được
Có, bạn có thể chạy nhiều của JVM trên một máy duy nhất.
Mặt trời gói các công cụ để chạy jvm theo một vài cách khác nhau. Thông thường, bạn có một bộ phát triển java (jdk) hoặc java standard edition (jse) được cài đặt làm mặc định. Những gói đó bao gồm một chương trình java
được gọi để bắt đầu một jvm. Ngoài ra, jdk cũng chứa một số lệnh bổ sung (như javac
) cho các nhà phát triển.
Bạn có thể có nhiều jdk và hoặc jse có sẵn trên một máy. Trên các cửa sổ, các gói jdk và jse thường được cài đặt dưới Program Files/java
(đây là từ bộ nhớ vì hiện tại tôi không có máy tính)
Trên máy Mac xem dưới /System/Library/Frameworks/JavaVM.framework/Versions .
Trên Linux, tôi sẽ sử dụng lệnh which java
để xác định vị trí lệnh mặc định java
được cài đặt (thường là/usr/bin). Sau đó, hãy thực hiện ls -al | grep java
(ví dụ: bên trong/usr/bin) và ghi chú nơi điểm liên kết tượng trưng để tìm ra nơi có thể có các phiên bản khác được cài đặt.
Khi bạn đã tìm ra vị trí của mỗi jdk và jse khác nhau trên hệ thống, bạn có thể bắt đầu tìm ra phiên bản java nào được sử dụng để khởi động từng chương trình.
Mỗi chương trình java sẽ khởi động bằng cách sử dụng jvm mặc định. Mở cửa sổ lệnh hoặc thiết bị đầu cuối và thử java -version
để xác định phiên bản nào là mặc định hiện tại.
Thay vì sử dụng phiên bản java mặc định, các chương trình cũng có thể được bắt đầu sử dụng một phiên bản java cụ thể. Ví dụ: đôi khi tôi tạo lối tắt cửa sổ tùy chỉnh để mở Eclipse bằng phiên bản jdk cụ thể.
Kể từ java 5, có một công cụ có tên là jconsole cũng có thể giúp bạn xác định chương trình nào đang chạy trong đó verions of jvms. Đơn giản chỉ cần mở một giao diện điều khiển, và gõ jconsole
và bạn sẽ nhận được một giao diện đẹp cho thấy tất cả các chương trình đang chạy trong jvm mặc định. Tôi nghĩ rằng bạn thậm chí có thể kiểm tra các chương trình classpaths.
Hy vọng rằng sẽ giúp, chúc bạn may mắn!
Có, bạn có thể cài đặt nhiều hơn một jvm trong PC của bạn, vì hệ điều hành tải một thể hiện của jvm (không phải toàn bộ jvm) trong RAM. Chúng ta có thể gọi các jvm khác nhau như JDK 1.4 hoặc JDK 1.6 bằng cách thiết lập đường dẫn của nó.
Bạn có thể chạy bao nhiêu tùy thích JVM trên cùng một máy. Bạn chỉ cần mở một số cửa sổ CommandPrompt và chạy những gì bạn muốn thông qua ứng dụng java
hoặc javaw
. Lớp mà mỗi JVM đang chạy là lớp THAT có chứa phương thức main()
. Phương thức Main() là phương thức đầu tiên chạy khi bạn khởi động một số ứng dụng Java. Tất nhiên, main() nằm trong một số lớp học của bạn. Đó là tất cả.
- 1. JVM Android có thể chạy trên PC không?
- 2. Tôi có thể có nhiều tệp web.config trong một dự án web đơn lẻ không?
- 3. Tôi có thể chạy javascript của riêng mình trên trang (đã tải) không?
- 4. Tôi có thể chia lớp C# của mình trên nhiều tệp không?
- 5. Tôi có thể loại trừ một chức năng đơn lẻ khỏi Export-ModuleMember không?
- 6. Ít hơn không hiển thị cho tôi lỗi của mình
- 7. Cầu cảng chạy trên 1.6 JVM không thể chạy webapp được biên dịch trên Java 1.6
- 8. Làm thế nào tôi có thể lưu các kết nối Oracle Toad của mình để chuyển sang một PC mới?
- 9. Tôi nên cài đặt phiên bản Windows 7 nào trên PC phát triển của mình?
- 10. TinyIoC: Đăng ký nhiều giao diện trên một cá thể đơn lẻ
- 11. Tôi có thể làm cho bộ nhớ cache .NET LRU đơn giản của mình nhanh hơn bằng cách nào?
- 12. Đặt nhiều truststore trên cùng một JVM
- 13. Nhiều bối cảnh trỏ đến một webapp đơn lẻ
- 14. Thực hiện dịch vụ đơn lẻ của WCF, Nhiều hành vi. Có thể
- 15. Tôi có thể chuyển các ứng dụng python hiện có của mình trên ASE không?
- 16. Chạy Haddock trên riêng của mình
- 17. Có thể có nhiều hoạt động của trình chạy không?
- 18. Bạn có thể có nhiều hơn một runloop cho mỗi luồng trên iOS không?
- 19. Nhiều phiên bản Firefox trên cùng PC
- 20. Có thể đơn lẻ và chạy một mục tiêu cụ thể liên kết với pha maven không?
- 21. Với mstest, tôi có thể chạy bộ thử nghiệm đơn vị của mình với từng ngôn ngữ được hỗ trợ của tôi không?
- 22. Có thể thực hiện nhiều thủ tục được lưu trữ trong một thao tác đơn lẻ không?
- 23. Có thể chạy nhiều AsyncTask cùng một lúc không?
- 24. các chương trình của tôi có thể truy cập nhiều hơn 4GB bộ nhớ không?
- 25. Tôi có thể phát một tin nhắn cụ thể trong mạng của mình bằng python không?
- 26. Nhiều giao diện từ một dịch vụ WCF đơn lẻ?
- 27. Tôi có nên ghi lại các phương pháp thử nghiệm đơn vị của mình không?
- 28. Chạy một thực thi plugin Maven đơn lẻ?
- 29. Nhiều phương pháp sơ đồ phẳng cho một đơn lẻ?
- 30. Tìm hiểu JVM Eclipse đang chạy trên
tại sao bạn muốn biết VM đã tải lớp gì? Nếu chúng ta biết rằng có lẽ chúng ta có thể đưa ra câu trả lời cho bạn. – TofuBeer
Điều này nghe có vẻ như bạn đang cố gắng làm điều gì đó nên được thực hiện theo cách khác. Bạn không cần phải biết lớp nào được tải trên một JVM. –