2012-03-15 21 views
12

Java'da yazılmış bir programım var ve C++ ile yazılmış bir yerel başlatıcı var, http://www.codeproject.com/Articles/17352/JVM-Launcher adresindeki bir örneğe göre. Garip bir şey, programımı yerel başlatıcımla çalıştırmanın java.exe (~% 5 vs% 15-20) kullanarak daha fazla CPU almasıdır. Bu durumu biraz düşündüm ama hala çok mantıklı değil. JVM yığın boyutunu artırmayı denedim, (yeniden) sürüm modunda yerel başlatıcıyı oluşturdu, farklı JRE sürümünü kullandı (1.6_24, 1.6_31, 1.7_03) ama şans yok.Java doğal başlatıcısı performansı

Bunun nasıl düzeltileceği konusunda bir öneri var mı?

+0

Bize kaynakları (C++ ve Java) sağlayabilir misiniz? Programın ne yaptığını bilmeden, bir şey söylemek gerçekten zor. – JesperE

+2

Sorunun nerede olduğunu buldum, hata ayıklama modunda jvm başlatmasına neden olan '-Djava.compiler = NONE' kullanımı. – secmask

+3

soruyu kapatmak için, bir cevap bulduğunuzdan emin misiniz? –

cevap

0

Not: OP'nin yorumunu yanıtlamak için bu cevabı vermek.

Sorun, C++ programının yerel başlatıcıyı -Djava.compiler=NONE ayarıyla çalıştırmasıydı. Bu, JVM'yi "yorumlayıcı" modda çalışacak şekilde ayarladı. JIT (tam zamanında) java baytkodunun yerel koda derlenmesini devre dışı bıraktı bytecode'un her yürütüldüğünde yorumlanması gerektiğinden, doğal olarak daha yavaş çalışır.