La Red de Conocimientos Pedagógicos - Currículum vitae - Problemas de optimización de la compilación de Java

Problemas de optimización de la compilación de Java

El resultado de la compilación de Java es un código de bytes en lugar de un código binario, por lo que la optimización de la VM es muy importante en tiempo de ejecución, incluida la estrategia de recuperación de la VM y el tamaño de la memoria asignada a la VM, lo que afectará el rendimiento hasta cierto punto. La máquina virtual de Sun admite la compilación de puntos de acceso y los binarios traducidos de los segmentos de código ejecutados con frecuencia se almacenarán en caché, lo que también es una optimización para la máquina virtual.

IBM JVM es el más rápido en el procesamiento de operaciones matemáticas, BEA JVM tiene el mejor rendimiento en el procesamiento de una gran cantidad de subprocesos y sockets de red, y Sun JVM tiene el mejor rendimiento en el procesamiento de la lógica empresarial general. Sin embargo, se informa que Hotspot tiene problemas de estabilidad con su modo de servidor.

La mayor ventaja de Java no se refleja en la velocidad de ejecución, por lo que los requisitos para el compilador no son tan altos como los que requiere la optimización a nivel de código de C++ las propias habilidades del programador.

Pegue los parámetros de ejecución de Java:

Uso: java [-options] clase [args...]

(Ejecutar una clase)

O java [-opciones] -jar archivo jar [args...]

(Ejecutar un archivo jar)

Las opciones incluyen:

-cliente Seleccione VM "cliente"

-servidor Seleccione VM "servidor"

-hotspot es sinónimo de VM "cliente" [obsoleto]

La máquina virtual predeterminada es el cliente.

-CP <Ruta de búsqueda de clases para directorios y archivos zip/jar>

-ruta de clases <Ruta de búsqueda de clases para directorios y archivos zip/jar>

a; directorios, archivos JAR,

y archivos ZIP para buscar archivos de clase.

-D<name>=<value>

Establecer propiedades del sistema

-verbose[:class|gc|jni]

p>

Habilitar salida detallada

-Version imprime la versión del producto y sale

-Version:<value>

Requiere ejecutar la versión especificada

-show version imprimir la versión del producto y continuar

-JRE-restrict-search |-JRE-no-restrict-search

Incluir/excluir en la búsqueda de versiones User Private JRE

-?-Ayuda a imprimir este mensaje de ayuda

-X imprime ayuda sobre opciones no estándar

-ea[:& lt; nombre de paquete & gt...|:<nombre de clase & gt]

-enable aserciones[:<packagename & gt...|:<classname & gt]

Habilitar aserciones

-da[: & lt;nombre del paquete & gt...|:<nombre de la clase & gt]

-desactivar evaluaciones[:& lt;nombre del paquete & gt ..|:<nombre de la clase>]

Deshabilitar aserciones

-esa | -enablesystemassertions

Habilitar aserciones del sistema

- DSA |-disablesystemassessments

Deshabilitar aserciones del sistema

-agent lib:<libname>[= <options>]

Cargar la biblioteca del agente local <libname>, por ejemplo -agentlib:hprof

Ver también, -agentlib:jdwp =help y -agentlib:hprof=help

-ruta del agente:<nombre de ruta>[=<options>]

Cargar biblioteca de agente nativo por nombre de ruta completo

-Agente Java:<jarpath>[= < Opciones>]

Carga el agente del lenguaje de programación Java, consulte

java.lang.instruments

-Xmixed ejecución en modo mixto (predeterminado)

-Ejecutar solo en modo interpretado Xint

-Xbootclasspath:<para directorios y archivos zip/jar;>

Establecer búsqueda rutas para clases de arranque y recursos

-Xbootclasspath/a:& lt; para directorios y archivos zip/jar;& gt

Agregar al final de la ruta de clases de arranque

-Xbootclasspath/p:& lt ;Para directorios y archivos zip/jar & gt

Agregar prefijo antes de la ruta de clase de inicio

-Xnoclassgc deshabilita la recolección de basura de clases

-Xincgc habilita la recolección de basura delta

- Xms <size>Establece el tamaño del montón inicial de Java

-Xmx<size>Establece el tamaño máximo del montón de Java

- Xss<size>Establezca el tamaño de pila del hilo de Java

-Xprof genera datos de análisis de la CPU

-Xfuture implementa la inspección más estricta y predice futuros valores predeterminados

<

p>-Xrs reduce el uso de señales del sistema operativo por parte de Java/VM (ver

Documentación)

-Xcheck:jni realiza comprobaciones adicionales en las funciones jni

-Xshare :off no intente usar datos de clase compartida

-Xshare: use automáticamente datos de clase compartida si es posible (predeterminado)

-Xshare:on requiere el uso de datos de clase compartida, de lo contrario fallar.

Descripción de la configuración de los parámetros de la máquina virtual Java

En aplicaciones a gran escala de Java y J2EE, la configuración de los parámetros no estándar de JVM está directamente relacionada con el rendimiento de todo el sistema.

Los parámetros no estándar de JVM se refieren a algunos parámetros de configuración de la JVM subyacente. En el desarrollo general, estos parámetros solo son necesarios de forma predeterminada.

Qué configuración quieres. Sin embargo, en un entorno de producción, estos parámetros a menudo deben ajustarse para implementar el sistema y mejorar el rendimiento.

Brindemos por la mejor nueva energía.

Además, la configuración de estos parámetros también es un factor importante que afecta a la estabilidad del sistema. Creo que la mayoría de los desarrolladores de Java ven un error del tipo "OutOfMemory". Jaja, es probable que la configuración del parámetro JVM sea incorrecta o falte.

Hay una configuración que no sabía que era causada por la configuración.

Para poder explicar estos parámetros, necesitamos hablar de algunos conocimientos de las herramientas de línea de comandos JDK.

Primero, vea cómo obtener la información de configuración de estos comandos:

Suponga que tiene una plataforma Windows y ha instalado J2SDK, ahora ingresa J2SDK desde la ventana de la consola cmd. propósito de la instalación.

Registre el directorio bin y luego ejecute el comando java. Aparecerán los siguientes resultados. Estos son la suma de las herramientas java.exe.

Todos los comandos de JVM están en él.

-

d:\ j2sdk 15 \ bin>Lenguaje Java (un lenguaje informático, especialmente utilizado para crear sitios web)

Uso: java [ -options] clase [args...]

(Ejecutar una clase)

o java [-options] -jar jarfile [args...]

(Ejecutar un archivo jar)

Las opciones incluyen:

-cliente selecciona la máquina virtual "cliente"

-servidor selecciona la máquina virtual "servidor"

-hotspot es sinónimo de VM "cliente" [obsoleto]

La VM predeterminada es el cliente.

-CP <Ruta de búsqueda de clases para directorios y archivos zip/jar>

-ruta de clases <Ruta de búsqueda de clases para directorios y archivos zip/jar>

a; directorios, archivos JAR,

y archivos ZIP para buscar archivos de clase.

-D<name>=<value>

Establecer propiedades del sistema

-verbose[:class|gc|jni]

p>

Habilitar salida detallada

-Version imprime la versión del producto y sale

-Version:<value>

Requiere ejecutar la versión especificada

-show version imprimir la versión del producto y continuar

-JRE-restrict-search |-JRE-no-restrict-search

Incluir/excluir en la búsqueda de versiones User Private JRE

-?-Ayuda a imprimir este mensaje de ayuda

-X imprime ayuda sobre opciones no estándar

-ea[:& lt; nombre de paquete & gt...|:<nombre de clase & gt]

-enable aserciones[:<packagename & gt...|:<classname & gt]

Habilitar aserciones

-da[: & lt;nombre del paquete & gt...|:<nombre de la clase & gt]

-desactivar evaluaciones[:& lt;nombre del paquete & gt ..|:<nombre de la clase>]

Deshabilitar aserciones

-esa | -enablesystemassertions

Habilitar aserciones del sistema

- DSA |-disablesystemassessments

Deshabilitar aserciones del sistema

-agent lib:<libname>[= <options>]

Cargar la biblioteca del agente local <libname>, por ejemplo -agentlib:hprof

Ver también, -agentlib:jdwp =help y -agentlib:hprof=help

-ruta del agente:<nombre de ruta>[=<options>]

Cargar la biblioteca del agente nativo por nombre de ruta completo

-Agente Java:<jarpath>[= < Opciones>]

Carga el agente del lenguaje de programación Java, consulte

java.lang.Instruments

-

Salida en la consola En la información, hay un comando -X (tenga en cuenta que está en letras mayúsculas), que sirve para ver la vida útil de los parámetros de configuración de JVM.

Orden.

En segundo lugar, utilice el comando java -X para ver las instrucciones de configuración de JVM:

Después de ejecutar, los siguientes resultados muestran que estas son las armas secretas para configurar los parámetros de JVM. en inglés por conveniencia.

Leyendo, lo traduje al chino según mi propio entendimiento (corríjame si hay imprecisiones)

-

d:\ j2sdk 15 \ bin & gt java -X

-Xejecución en modo mixto (predeterminado)

-Ejecutar solo en modo interpretado Xint

-Xbootclasspath:< Uso de archivos;& gt

Establecer rutas de búsqueda para clases y recursos de arranque

-Xbootclasspath/a:& lt;Usar para directorios y archivos zip/jar;& gt

Agregar al final de la ruta de clases de inicio

-Xbootclasspath/p:<Para directorios y archivos zip/jar;>

Agregar un prefijo antes de la ruta de clases de inicio

-Xnoclassgc deshabilita la recolección de basura de clases

-Xincgc habilita la recolección de basura incremental

-Xloggc:<file>t Registra el estado de GC en una marca de tiempo en el archivo

-Xbatch deshabilita la compilación en segundo plano

-Xms<size> establece el tamaño inicial del montón de Java

-Xmx<size> establece el tamaño máximo del montón de Java

-Xss<size>Set tamaño de pila de subprocesos de Java

-Xprof genera datos de análisis de CPU

-Xfuture implementa la comprobación más estricta y predice valores predeterminados futuros

- Xrs reduce el uso de operaciones de Java/VM señales del sistema (ver

documentación)

- Las funciones realizan comprobaciones adicionales

-Xshare:offNo intente utilizar datos de clases compartidas

-Xshare: utiliza automáticamente datos de clases compartidas si es posible (predeterminado)

-Xshare:on requiere el uso de datos compartidos; de lo contrario, falla.

Las opciones X no son estándar y están sujetas a cambios sin previo aviso.

-

Descripción china de los parámetros de configuración de JVM:

-

1, -X ejecución en modo mixto mixto (predeterminado)

Ejecución en modo mixto

2, -Xint solo interpreta la ejecución en modo

Ejecución en modo explicación

3, -Xbootclasspath:<Directorio y zip / se utilizan archivos jar; & gt

Establecer rutas de búsqueda para clases y recursos de arranque

Establecer recursos o clases zip/jar (archivos .class) que se almacenarán.

3. - Se almacenan los recursos o clases /jar (archivos .class).

4.- Se almacenan recursos o clases zip/jar (archivos .class).

5. -Xnoclassgc deshabilita la recolección de basura de clases

Desactiva la función de recolección de basura

6. -Xincgc habilita la recolección de basura incremental

Active la función de recolección de basura de esta clase

7, -

8. -Xbatch deshabilita la compilación en segundo plano

Desactiva la compilación en segundo plano

9. -Xms & ltsize & gt establece el tamaño del montón inicial de Java

Establezca el tamaño de memoria del montón de inicialización de JVM

10, - Xmx & ltsize & gtEstablezca el tamaño máximo de memoria del montón de Java

Establezca el tamaño máximo de memoria del montón de la JVM.

11, - >

Ingresar datos de la tabla de resumen de la CPU

13. -Xfuture permite las comprobaciones más estrictas para predecir futuras infracciones

Realizar comprobaciones estrictas del código para predecir lo que puede pasar.

14. -Xrs reduce el uso de señales del sistema operativo por parte de Java/VM (ver

documentación)

Restaurar señales del sistema operativo a través de JVM

15, -Xcheck:jni realiza comprobaciones adicionales en las funciones jni

Comprueba las funciones JNI

16, -Xshare:off No intente utilizar datos de clases compartidas

Intenta no utilizar * * * datos.

17. -Xshare: utilizar automáticamente datos compartidos si es posible (predeterminado)

Utilizar * * * datos tanto como sea posible.

18. -Xshare:on requiere el uso de datos compartidos; de lo contrario, fallará.

Utilice * * * datos tanto como sea posible; de ​​lo contrario, la operación fallará.

Las opciones X no son estándar y están sujetas a cambios sin previo aviso.