2012-03-15 13 views
12

Tengo un programa escrito en Java y un iniciador nativo escrito en C++, basado en una muestra en http://www.codeproject.com/Articles/17352/JVM-Launcher. Una cosa extraña es que ejecutar mi programa con mi iniciador nativo requiere más CPU que usar java.exe (~ 5% frente a 15-20%). He estado pensando en esta situación, pero todavía no tiene mucho sentido. Intenté aumentar el tamaño del almacenamiento dinámico de JVM, (re) construí el iniciador nativo en modo de lanzamiento, utilicé una versión de JRE diferente (1.6_24, 1.6_31, 1.7_03) pero no tuve suerte.Operador Java Lanzador nativo

¿Alguien tiene alguna sugerencia sobre cómo solucionarlo?

+0

¿Puede proporcionarnos las fuentes (tanto C++ como Java)? Sin saber lo que hace su programa, es realmente difícil decir algo. – JesperE

+2

He encontrado dónde está el problema, es el uso de '-Djava.compiler = NONE' que causa el lanzamiento de jvm en modo de depuración. – secmask

+3

cuídate de cerrar la pregunta, ya que encontraste una respuesta? –

Respuesta

0

Nota: Proporcionando esta respuesta para mover el comentario del OP a la respuesta.

El problema era que el programa C++ ejecutaba el iniciador nativo con la configuración -Djava.compiler=NONE, que esencialmente configuraba la JVM para ejecutarse en modo "interpretativo", deshabilitando la compilación JIT (just-in-time) de bytecode java en código nativo , lo que naturalmente hace que la ejecución sea más lenta ya que el bytecode debe interpretarse cada vez que se ejecuta.