2012-03-15 37 views
12

Tôi có một chương trình được viết bằng Java và trình khởi chạy gốc được viết bằng C++, dựa trên mẫu tại http://www.codeproject.com/Articles/17352/JVM-Launcher. Một điều kỳ lạ là chạy chương trình của tôi với trình khởi chạy nguyên bản của tôi có nhiều CPU hơn sử dụng java.exe (~ 5% so với 15-20%). Tôi đã cho tình huống này một số suy nghĩ nhưng nó vẫn không có ý nghĩa nhiều. Tôi đã thử tăng kích thước heap JVM, (lại) được xây dựng các launcher bản địa trong chế độ phát hành, sử dụng phiên bản JRE khác nhau (1.6_24, 1.6_31, 1.7_03) nhưng không có may mắn.Hiệu suất trình chạy bản địa Java

Có ai có đề xuất về cách sửa lỗi này không?

+0

Bạn có thể cung cấp cho chúng tôi các nguồn (cả C++ và Java) không? Không biết chương trình của bạn làm gì, thật khó để nói bất cứ điều gì. – JesperE

+2

Tôi đã tìm thấy vấn đề ở đâu, đó là việc sử dụng '-Djava.compiler = NONE' gây ra khởi chạy jvm trong chế độ gỡ lỗi. – secmask

+3

cẩn thận để đóng câu hỏi, vì bạn đã tìm thấy câu trả lời? –

Trả lời

0

Lưu ý: Cung cấp câu trả lời này để di chuyển nhận xét của OP để trả lời.

Vấn đề là chương trình C++ đang chạy trình chạy bản địa với cài đặt -Djava.compiler=NONE, về cơ bản thiết lập JVM chạy ở chế độ "diễn giải", vô hiệu hóa việc biên dịch JIT (just-in-time) của bytecode java thành mã gốc , mà tự nhiên làm cho chạy chậm hơn như bytecode cần phải được giải thích mỗi khi nó được thực hiện.

Các vấn đề liên quan