2012-03-15 23 views
12

我有一个用Java编写的程序和一个用C++编写的本机启动器,基于http://www.codeproject.com/Articles/17352/JVM-Launcher的示例。奇怪的是,使用我的本地启动程序运行我的程序需要比使用java.exe(〜5%vs 15-20%)更多的CPU。我一直在考虑这种情况,但它仍然没有多大意义。我试过增加JVM堆大小,(重新)在发布模式下构建本地启动器,使用不同的JRE版本(1.6_24,1.6_31,1.7_03),但没有运气。Java本机启动器性能

有没有人有建议如何解决这个问题?

+0

你能否给我们提供源代码(包括C++和Java)?不知道你的程序做什么,要说什么真的很难。 – JesperE 2012-03-19 20:22:17

+2

我发现问题在哪里,它是使用'-Djava.compiler = NONE',这会导致jvm以调试模式启动。 – secmask 2012-03-20 00:56:33

+3

关心这个问题,因为你找到了答案? – 2012-04-19 16:33:29

回答

0

注意:提供此答案以将OP的评论移至回答。

问题是C++程序运行的是本机启动程序和-Djava.compiler=NONE设置,它基本上将JVM设置为以“解释”模式运行,禁止将JIT(即时)编译为本机代码,因为每次执行字节码都需要解释,这自然会使运行速度变慢。