Puesta a punto de la puesta a punto de comienzo real JVM Eclipse

Este artículo es mis 12 años de estudio de "la comprensión en profundidad de la máquina virtual de Java JVM características y las mejores prácticas avanzado", la JVM para hacer una nota de afinación práctica sencilla, son versión algo anticuado, pero el proceso de ajuste todavía puede compartir ideas y dar a cada uno referencias.

Configuración básica del Medio Ambiente

Hardware: el Dell E5410, la CPU Intel i3 M 370, memoria RAM de 2 GB

Sistema: 32-bit Windows XP

máquina virtual: la Java HotSpot (TM) Client VM (17.1 Build-B03, el modo mixto, Compartir)

Eclipse版本: Release 4.2.0 Ultima revisión de junio de octava, 2012

hace tuning

Eclipse archivo de configuración inicial

eclipse.ini

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xms40m
-Xmx512m

Los resultados del examen antes de sintonizar

  • Promedio tarda aproximadamente: 10 segundos
  • El total recolector de basura tiempo transcurrido 1.710 s, en los cuales:
    • Completa GC fue provocada ocho veces, tomó 1.438 s;
    • Menor GC se activó 29 veces, que consumen mucho tiempo 272.185 ms;
    • Eclipse después de funcionar durante algún tiempo, se llamará de forma explícita método System.gc () para hacer completa GC.
  • Cargas clases: 8279, tiene 7.598 s
  • JIT tiempo de compilación: 1.829 s
  • máquina virtual con 512 MB de memoria se asigna para la nueva generación de 170MB (zona de Eden por el 136mb y 17MB de dos zonas superviviente) y 342MB de años de antigüedad

Eclipse proceso de inicio:

Después de iniciar la Eclipse, funcionando desde hace algún tiempo:

Análisis y optimización

JDK actualización de la versión

Obtener libre "rendimiento" (aquí temporalmente no serán considerados).

Clase de carga y optimización en tiempo de compilación

cargador de clases: optimización de verificación de código de bytes. Teniendo en cuenta las circunstancias reales: Eclipse de usuario mucho, que el código compilado es fiable, sin verificación de código de bytes más en tiempo de carga.

medidas de optimización: parámetros add -Xverify:nonepara prohibir la verificación de código de bytes.

tiempo de compilación: Ninguno

Ajustar la configuración de memoria de control de la frecuencia de la recolección de basura

primer tiempo

Menor GC nueva generación se debe a que el espacio asignado a la nueva generación de pequeña ventaja.

GC razones completos que surgen desde el registro de análisis de GC:

2.558: [Full GC 2.558: [Tenured: 5029K->6089K(27328K), 0.0769168 secs] 7919K->6089K(39616K), [Perm : 16383K->16383K(16384K)], 0.0769992 secs] [Times: user=0.08 sys=0.00, real=0.08 secs]
4.740: [Full GC 4.740: [Tenured: 9085K->11372K(27328K), 0.1007947 secs] 13555K->11372K(39680K), [Perm : 20479K->20479K(20480K)], 0.1008572 secs] [Times: user=0.08 sys=0.00, real=0.09 secs]
5.853: [Full GC 5.853: [Tenured: 13120K->16847K(27328K), 0.1368830 secs] 25460K->16847K(39680K), [Perm : 24575K->24575K(24576K)], 0.1369769 secs] [Times: user=0.14 sys=0.00, real=0.14 secs]
6.317: [Full GC 6.317: [Tenured: 16847K->17236K(28080K), 0.1789713 secs] 20615K->17236K(40752K), [Perm : 28671K->28646K(28672K)], 0.1791253 secs] [Times: user=0.17 sys=0.00, real=0.17 secs]
7.247: [Full GC 7.248: [Tenured: 19043K->20238K(28728K), 0.1739436 secs] 20408K->20238K(41720K), [Perm : 32767K->32767K(32768K)], 0.1740637 secs] [Times: user=0.17 sys=0.00, real=0.17 secs]
7.928: [Full GC 7.928: [Tenured: 20238K->22897K(33732K), 0.2087824 secs] 31501K->22897K(48964K), [Perm : 36863K->36863K(36864K)], 0.2093529 secs] [Times: user=0.20 sys=0.00, real=0.20 secs]
9.892: [Full GC 9.892: [Tenured: 22897K->25238K(38164K), 0.2628295 secs] 38655K->25238K(55444K), [Perm : 40959K->40959K(40960K)], 0.2629460 secs] [Times: user=0.27 sys=0.00, real=0.27 secs]

parámetros de registro de impresión

-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
-Xloggc:gc.log

Se puede ver de lo anterior, el pleno GC 7 veces en los últimos 4 años de edad GC completa para la expansión, la expansión al último de 27328K 38164K. A partir de los datos, se puede ver tres veces antes de GC completa es sustituida por una expansión permanente provocada.

Del análisis anterior se puede concluir

Eclipse comenzó cuando, Encuadre de GC es sobre todo debido a las viejas generaciones y permanentes resultantes de la expansión de la capacidad con el fin de evitar el desperdicio de rendimiento, puede -Xmsy -XX:PermSizevalores de los parámetros se establecen -Xmxy -XX:PermSizeMaxvalores de los parámetros, que es del mismo tamaño se ajusta para reducir la expansión automática.

Optimización de las medidas concretas

La nueva generación se establece en 170 MB, la nueva generación evitar la expansión frecuente de la GC:
el montón de Java, la capacidad de generación permanente se fija en 512 MB y 256 MB, expansión de memoria evitar.

contenido eclipse.ini ajusta

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xverify:none
-Xms512m
-Xmx512m
-Xmn170m
-XX:PermSize=256m

segundo

Después de los resultados de ajuste operativo, el análisis de nuevo:

Gen curva de edad desde el punto de vista, el año de edad fijado directamente a 342MB, utilizando 25.69MB, y ha sido muy suave, completamente peces completa GC no pasaran. A continuación, el registro de GC y una sierra marcados vuelta completa del sistema GC y GC figura hora de la última Causa: System.gc (), por el sistema descrito llamar explícitamente System.gc ().

medidas de optimización:

Extracción explícitamente llamar System.gc (), agregue el parámetro -XX:+DisableExplicitGCenmascarados System.gc ().

Ajustado contenido eclipse.ini:

-startup
plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.200.v20120522-1813
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Dhelp.lucene.tokenizer=standard
-Xverify:none
-Xms512m
-Xmx512m
-Xmn170m
-XX:PermSize=256m
-XX:+DisableExplicitGC

Después de sintonizar la optimización

resultados de la optimización de carga de clases

Adición de parámetros -Xverify:none, el tiempo de carga de clases se reduce a partir de 7.598s 4.665s.

Después de ajustar el resultado de control de memoria proporcionado

En primer lugar:

registros de GC:

2.845: [GC 2.846: [DefNew: 139264K->7351K(156672K), 0.0463358 secs] 139264K->7351K(506880K), 0.0463981 secs] [Times: user=0.05 sys=0.00, real=0.05 secs]
4.581: [GC 4.582: [DefNew: 146615K->16818K(156672K), 0.0786477 secs] 146615K->16818K(506880K), 0.0787217 secs] [Times: user=0.08 sys=0.00, real=0.08 secs]
64.279: [Full GC (System) 64.279: [Tenured: 0K->26315K(350208K), 0.3266376 secs] 127364K->26315K(506880K), [Perm : 39195K->39195K(262144K)], 0.3267561 secs] [Times: user=0.31 sys=0.01, real=0.33 secs]

En los parámetros ajustados, número de GC se ha reducido drásticamente. La Figura 1 es una curva de monitoreo de partida trasera Eclipse minutos se produce sólo dos veces Minor GC y 1 completa GC, 451.603ms total de tiempo transcurrido. En comparación con los 1.710s anteriores, disminución por dos veces.

En segundo lugar:

No tengo la completa GC arriba.

resumen

Estos son sólo dedicaron a proceso de análisis y puesta a punto para el inicio de la Eclipse, Eclipse hizo el trabajo de desarrollo diaria en el análisis y puesta a punto.

material de referencia

  • "La comprensión en profundidad de la máquina virtual de Java JVM características y mejores prácticas avanzadas".

Supongo que te gusta

Origin www.cnblogs.com/daodaotest/p/12540530.html
Recomendado
Clasificación