¿Cuáles son las mejores configuraciones de JVM que ha encontrado para ejecutar Eclipse?
Es esa época del año otra vez: “eclipse.ini take 3” ¡la configuración devuelve el golpe!
texto alternativo http://www.eclipse.org/home/promotions/friends-helios/helios.png
Después de la configuración de Eclipse Ganymede 3.4.x y Eclipse Galileo 3.5.x , aquí hay una mirada profunda a un archivo de configuración de eclipse.ini “optimizado” para Eclipse Helios 3.6.x:
( por “optimizado”, me refiero a poder ejecutar un Eclipse de pleno vuelo en nuestra estación de trabajo en mal estado, un viejo P4 de 2002 con 2Go RAM y XPSp3. Pero también he probado esas mismas configuraciones en Windows 7 )
ADVERTENCIA : para plataformas que no sean Windows, use la opción propietaria de Sun -XX:MaxPermSize
lugar de la opción propietaria de Eclipse --launcher.XXMaxPermSize
.
Es decir: a menos que esté utilizando la última versión de jdk6u21 7 . Vea la sección de Oracle a continuación.
-data ../../workspace -showlocation -showsplash org.eclipse.platform --launcher.defaultAction openFile -vm C:/Prog/Java/jdk1.6.0_21/jre/bin/server/jvm.dll -vmargs -Dosgi.requiredJavaVersion=1.6 -Declipse.p2.unsignedPolicy=allow -Xms128m -Xmx384m -Xss4m -XX:PermSize=128m -XX:MaxPermSize=384m -XX:CompileThreshold=5 -XX:MaxGCPauseMillis=10 -XX:MaxHeapFreeRatio=70 -XX:+CMSIncrementalPacing -XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+UseFastAccessorMethods -Dcom.sun.management.jmxremote -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/Prog/Java/eclipse_addons
Nota:
Adapte p2.reconciler.dropins.directory
a un directorio externo de su elección.
Vea esta respuesta SO . La idea es poder colocar nuevos complementos en un directorio independientemente de cualquier instalación de Eclipse.
Las siguientes secciones detallan lo que hay en este archivo eclipse.ini
.
Andrew Niefer me alertó sobre esta situación y escribió una publicación de blog sobre un argumento vm no estándar ( -XX:MaxPermSize
) y puede hacer que los vms de otros proveedores no se inicien en absoluto.
Pero la versión eclipse de esa opción ( --launcher.XXMaxPermSize
) no funciona con el nuevo JDK (6u21, a menos que esté utilizando el 6u21 build 7, ver más abajo).
los final la solución está en Eclipse Wiki , y para Helios en Windows con 6u21 pre build 7 solamente:
(eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503
Eso es. No hay ajustes para ajustar aquí (nuevamente, solo para Helios en Windows con una precomposición 6u21 7 ).
Para la plataforma que no es de Windows, debe volver a la opción propietaria de Sun -XX:MaxPermSize
.
El problema se basa en una regresión: la identificación de JVM falla debido a una nueva marca de Oracle en java.exe , y desencadena el error 319514 en Eclipse.
Andrew se encargó de Bug 320005 – [launcher] --launcher.XXMaxPermSize: isSunVM
debería devolver true para Oracle , pero eso solo será para Helios 3.6.1.
Francis Upton , otro comentarista de Eclipse, reflexiona sobre la situación .
Actualización u21b7, 27 de julio :
Oracle ha retrocedido el cambio para la próxima versión de Java 6 y no lo implementará nuevamente hasta JDK 7 .
Si usa jdk6u21 comstackción 7 , puede volver al --launcher.XXMaxPermSize
(opción eclipse) en lugar de -XX:MaxPermSize
(la opción no estándar).
La detección automática que ocurre en el eclipse.exe
C shim eclipse.exe
aún buscará la cadena ” Sun Microsystems
“, pero con 6u21b7, ahora funcionará nuevamente.
Por ahora, aún -XX:MaxPermSize
versión -XX:MaxPermSize
(porque no tengo idea de cuándo todos lanzarán Eclipse el JDK correcto ).
Contrariamente a la configuración anterior, la ruta exacta para esos módulos ya no está establecida, lo cual es conveniente ya que puede variar entre las diferentes versiones de Eclipse 3.6.x:
org.eclipse.equinox.launcher
la versión más alta. plugins
el fragmento org.eclipse.equinox.launcher.[platform]
apropiado con la versión más alta y utiliza la biblioteca compartida llamada eclipse_*
inside. El JDK6 ahora se requiere explícitamente para ejecutar Eclipse:
-Dosgi.requiredJavaVersion = 1.6
Esta pregunta SO informa una incidencia positiva para el desarrollo en Mac OS.
Las siguientes opciones son parte de algunas de las opciones experimentales de Sun JVM.
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC -XX:+UseFastAccessorMethods
Han sido reportados en esta publicación de blog para potencialmente acelerar Eclipse.
Vea todas las opciones de JVM aquí y también en la página oficial de opciones de Hotspot de Java .
Nota: la lista detallada de esas opciones informa que UseFastAccessorMethods
podría estar activo de forma predeterminada.
Ver también “Actualizar su JVM” :
Como recordatorio, G1 es el nuevo recolector de basura en preparación para el JDK 7, pero ya se usó en el lanzamiento de la versión 6 de u17.
Vea la publicación del blog de Andrew Niefer que informa esta nueva opción:
--launcher.defaultAction openFile
Esto le dice al iniciador que si se llama con una línea de comandos que solo contiene argumentos que no comienzan con ”
-
“, entonces esos argumentos se deben tratar como si siguieran ”--launcher.openFile
“.
eclipse myFile.txt
Este es el tipo de línea de comando que el iniciador recibirá en Windows cuando haga doble clic en un archivo que esté asociado con Eclipse, o seleccione archivos y elija ”
Open With
” o ”Send To
” Eclipse.Las rutas relativas se resolverán primero contra el directorio de trabajo actual, y las segundas contra el directorio de progtwig de eclipse.
Ver error 301033 para referencia. Originalmente error 4922 (octubre de 2001, corregido 9 años después).
Si está cansado de este cuadro de diálogo durante la instalación de sus muchos complementos:
, agrega en tu eclipse.ini
:
-Declipse.p2.unsignedPolicy=allow
Vea esta publicación del blog de Chris Aniszczy , y el informe de error 235526 .
Quiero decir que la investigación de seguridad respalda el hecho de que hay menos indicaciones.
La gente ignora las cosas que surgen en el flujo de algo que quieren que se haga.Para 3.6, no deberíamos mostrar advertencias en el medio del flujo: no importa cuánto simplifiquemos, la gente simplemente las ignorará.
En su lugar, debemos recostackr todos los problemas, no instalar esos paquetes con problemas y, en su lugar, llevar al usuario a un punto en el flujo de trabajo donde puedan arreglarlo: agregar confianza, configurar la política de seguridad de manera más flexible, etc. Esto se llama ‘seguro’ puesta en escena ‘ .
———- http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif texto alternativo http://www.eclipse.org/home/categories/images/wiki.gif
Esas opciones no están directamente en el eclipse.ini
anterior, pero pueden ser útiles si es necesario.
Cuando se inicia eclipse, leerá su archivo de almacén de claves (donde se guardan las contraseñas), un archivo ubicado en user.home
.
Si por algún motivo ese user.home
no se resuelve correctamente en una ruta de acceso completa, Eclipse no se iniciará.
Inicialmente planteado en esta pregunta de SO , si experimenta esto, necesita redefinir el archivo de almacén de claves a una ruta explícita (no más usuario.hogar para resolver al inicio)
Agregue su eclipse.ini
:
-eclipse.keyring C:\eclipse\keyring.txt
Esto ha sido rastreado por el error 300577 , se ha resuelto en esta otra pregunta SO .
Espera, hay más de un archivo de configuración en Eclipse.
si agrega a su eclipse.ini
la opción:
-debug
, habilita el modo de depuración y Eclipse buscará otro archivo de configuración: un archivo .options
donde puede especificar algunas opciones OSGI.
Y eso es genial cuando agrega nuevos complementos a través de la carpeta dropins.
Agregue en su archivo .options la siguiente configuración, como se describe en esta publicación del blog ” Diagnóstico de Dropins ” :
org.eclipse.equinox.p2.core/debug=true org.eclipse.equinox.p2.core/reconciler=true
P2 le informará qué paquetes se encontraron en
dropins/
folder, qué solicitud se generó y cuál es el plan de instalación. Tal vez no sea una explicación detallada de lo que sucedió realmente, y de lo que salió mal, pero debería brindarle información sólida sobre dónde comenzar:
- ¿Tu paquete estaba en el plan?
- Fue un problema de instalación (falla P2)
- o tal vez simplemente no es óptimo incluir tu característica?
Eso viene de Bug 264924 – [reconciliador] Sin diagnóstico de problemas de caída , que finalmente resuelve el siguiente problema como:
Unzip eclipse-SDK-3.5M5-win32.zip to ..../eclipse Unzip mdt-ocl-SDK-1.3.0M5.zip to ..../eclipse/dropins/mdt-ocl-SDK-1.3.0M5
Esta es una configuración problemática ya que OCL depende de EMF que falta.
3.5M5 no proporciona ningún diagnóstico de este problema.Comience eclipse.
Sin problemas obvios Nada en el registro de errores.
Help / About / Plugin
muestranorg.eclipse.ocl.doc
, pero noorg.eclipse.ocl
.Help / About / Configuration
Detalles deHelp / About / Configuration
no tiene mención (de diagnóstico) deorg.eclipse.ocl
.Help / Installation / Information Installed Software
no menciona aorg.eclipse.ocl
.¿Dónde están los buenos marcadores de error?
Ver esta publicación en el blog :
- En Galileo (también conocido como Eclipse 3.5), JDT comenzó a resolver el classpath de manifiesto en bibliotecas añadidas a la ruta de comstackción del proyecto. Esto funcionó si la biblioteca se agregó a la ruta de comstackción del proyecto directamente o a través de un contenedor de ruta de clases, como la facilidad de la biblioteca del usuario proporcionada por JDT o una implementada por un tercero.
- En Helios, este comportamiento se modificó para excluir los contenedores classpath de la resolución de clase de manifiesto.
Eso significa que algunos de sus proyectos podrían no comstackrse en Helios.
Si desea volver al comportamiento de Galileo, agregue:
-DresolveReferencedLibrariesForContainers=true
Ver error 305037 , error 313965 y error 313890 para referencias.
Esta pregunta SO menciona una posible solución cuando no se accede a los sitios de actualización de complementos:
-Djava.net.preferIPv4Stack=true
Mencionado aquí en caso de que pueda ayudar en su configuración.
Este artículo informa:
Para el registro, las opciones más rápidas que he encontrado hasta ahora para mi prueba de banco con el 1.7 x64 JVM n Windows son:
-Xincgc -XX:-DontCompileHugeMethods -XX:MaxInlineSize=1024 -XX:FreqInlineSize=1024
Pero todavía estoy trabajando en eso …
Actualmente (noviembre de 2009), estoy probando con jdk6 update 17 el siguiente conjunto de opciones de configuración (con Galileo – eclipse 3.5.x, ver a continuación para 3.4 o superior para Helios 3.6.x ):
(por supuesto, adapte las rutas relativas presentes en este eclipse.ini a las rutas correctas para su configuración)
Nota: para eclipse3.5 , reemplace startup
líneas de startup
y launcher.library
por:
-startup plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-data ../../workspace -showlocation -showsplash org.eclipse.platform --launcher.XXMaxPermSize 384m -startup plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519 -vm ../../../../program files/Java/jdk1.6.0_17/jre/bin/client/jvm.dll -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms128m -Xmx384m -Xss4m -XX:PermSize=128m -XX:MaxPermSize=384m -XX:CompileThreshold=5 -XX:MaxGCPauseMillis=10 -XX:MaxHeapFreeRatio=70 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -Dcom.sun.management.jmxremote -Dorg.eclipse.equinox.p2.reconciler.dropins.directory=C:/jv/eclipse/mydropins
Ver también mi respuesta original más arriba para más información.
org.eclipse.equinox.p2.reconciler.dropins.directory
. Hubo un error con los puntos de corte ignorados realmente relacionados con el JDK.
Utilice JDK6u16 o más reciente para iniciar eclipse (Puede definir tantos JDK que desee comstackr dentro de Eclipse: no es porque inicie un eclipse con JDK6 que tendrá que comstackr con ese mismo JDK).
Tenga en cuenta el uso de:
--launcher.XXMaxPermSize 384m -vmargs -XX:MaxPermSize=128m
Como se documenta en Eclipse Wiki ,
Eclipse 3.3 admite un nuevo argumento para el
--launcher.XXMaxPermSize
:--launcher.XXMaxPermSize
.
Si la VM que se utiliza es una VM Sun y no existe un-XX:MaxPermSize=
VM, entonces el-XX:MaxPermSize=256m
agregará automáticamente-XX:MaxPermSize=256m
a la lista de argumentos de VM que se está utilizando.
El iniciador 3.3 solo es capaz de identificar máquinas virtuales Sun en Windows.
Como se detalla en esta entrada :
No todos los
-XX:MaxPermSize
aceptan el argumento-XX:MaxPermSize
razón por la cual se pasa de esta manera. Puede haber (o no) problemas para identificar sun vms.
Nota: Eclipse 3.3.1 tiene un error en el que el iniciador no puede detectar una máquina virtual Sun y, por lo tanto, no utiliza el tamaño correcto de PermGen. Parece que esto puede haber sido un error conocido en Mac OS X para 3.3.0 también.
Si está usando cualquiera de estas combinaciones de plataforma, agregue la bandera-XX
aleclipse.ini
como se describe arriba.Notas:
- la línea ”
384m
” se traduce a la parte ”=384m
” del argumento VM, si la VM es sensible a mayúsculas y minúsculas en la ”m
“, entonces este es el argumento.- el
--launcher.
”--launcher.
“, esto especifica que el argumento es consumido por el propio lanzador y se agregó a los argumentos específicos del lanzador para evitar colisiones de nombres con los argumentos de la aplicación. (Otros ejemplos son--launcher.library
,--launcher.suppressErrors
)La parte
-vmargs -XX:MaxPermSize=384m
es el argumento pasado directamente a la VM, eludiendo por completo el iniciador y no se utiliza ninguna verificación en el proveedor de VM.
Para configuraciones más recientes, vea la configuración anterior de Eclipse Galileo 3.5 .
La mejor configuración de JVM siempre , en mi opinión, incluye el último JDK que puede encontrar (por ahora, jdk1.6.0_b07 hasta b16, excepto b14 y b15 )
Incluso con esas configuraciones de memoria bastante bajas, puedo ejecutar grandes proyectos Java (junto con un servidor web) en mi viejo (2002) escritorio con 2Go RAM.
-showlocation -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256M -framework plugins\org.eclipse.osgi_3.4.2.R34x_v20080826-1230.jar -vm jdk1.6.0_10\jre\bin\client\jvm.dll -vmargs -Dosgi.requiredJavaVersion=1.5 -Xms128m -Xmx384m -Xss2m -XX:PermSize=128m -XX:MaxPermSize=128m -XX:MaxGCPauseMillis=10 -XX:MaxHeapFreeRatio=70 -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+CMSIncrementalPacing -XX:CompileThreshold=5 -Dcom.sun.management.jmxremote
Vea la respuesta SO de GKelly y la entrada del blog de Piotr Gabryanczyk para obtener más detalles sobre las nuevas opciones.
También puedes considerar lanzar:
C:\[jdk1.6.0_0x path]\bin\jconsole.exe
Como se dijo en una pregunta anterior sobre el consumo de memoria .
Configuraciones para Sun / Oracle java versión “1.6.0_31” y Eclipse 3.7 ejecutando en x86-64 Linux:
-nosplash -vmargs -Xincgc -Xss500k -Dosgi.requiredJavaVersion=1.6 -Xms64m -Xmx200m -XX:NewSize=8m -XX:PermSize=80m -XX:MaxPermSize=150m -XX:MaxPermHeapExpansion=10m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseParNewGC -XX:+CMSConcurrentMTEnabled -XX:ConcGCThreads=2 -XX:ParallelGCThreads=2 -XX:+CMSIncrementalPacing -XX:CMSIncrementalDutyCycleMin=0 -XX:CMSIncrementalDutyCycle=5 -XX:GCTimeRatio=49 -XX:MaxGCPauseMillis=20 -XX:GCPauseIntervalMillis=1000 -XX:+UseCMSCompactAtFullCollection -XX:+CMSClassUnloadingEnabled -XX:+DoEscapeAnalysis -XX:+UseCompressedOops -XX:+AggressiveOpts -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses
Tenga en cuenta que esto utiliza solo 200 MB para el montón y 150 MB para el no montón. Si está utilizando complementos enormes, es posible que desee boost los límites “-Xmx200m” y “-XX: MaxPermSize = 150m”.
El objective de optimización principal para estos indicadores ha sido minimizar la latencia en todos los casos y, como objective secundario de optimización, minimizar el uso de la memoria.
-mostrar ubicación
Para que sea más fácil tener eclipse ejecutándose dos veces, y saber con qué área de trabajo estás tratando
Eclipse 3.6 agrega una opción de preferencias para especificar qué mostrar para el Workspace name (shown in window title)
del área de Workspace name (shown in window title)
que funciona mucho mejor que -showlocation
por tres razones:
Si vas con la actualización 14 de jdk6, te sugiero usar el recolector de basura G1, que parece ayudar al rendimiento.
Para hacerlo, elimine estas configuraciones:
-XX: + UseConcMarkSweepGC
-XX: + CMSIncrementalMode
-XX: + CMSIncrementalPacing
y reemplazarlos con estos:
-XX: + UnlockExperimentalVMOptions
-XX: + UseG1GC
Si está utilizando Linux + Sun JDK / JRE 32bits , cambie “-vm” a:
-vm [your_jdk_folder]/jre/lib/i386/client/libjvm.so
Si está utilizando Linux + Sun JDK / JRE 64bits , cambie “-vm” a:
-vm [your_jdk_folder]/jre/lib/amd64/server/libjvm.so
Eso está funcionando bien para mí en Ubuntu 8.10 y 9.04
También puedes intentar ejecutar con JRockit . Es una JVM optimizada para servidores, pero muchas aplicaciones cliente de larga ejecución, como IDE, funcionan muy bien en JRockit. Eclipse no es una excepción. JRockit no tiene un espacio permanente, por lo que no necesita configurarlo.
Es posible establecer un objective de tiempo de pausa (ms) para evitar largas pausas de cc que bloqueen la IU.
-showsplash org.eclipse.platform -vm C:\jrmc-3.1.2-1.6.0\bin\javaw.exe -vmargs -XgcPrio:deterministic -XpauseTarget:20
Por lo general, no me molesto en configurar -Xmx y -Xms y dejar que JRockit crezca el montón como lo considere necesario. Si ejecuta su aplicación Eclipse con JRockit, también puede supervisar, crear perfiles y encontrar pérdidas de memoria en su aplicación utilizando el conjunto de herramientas de control de misión de JRockit. Descargue los complementos desde este sitio de actualización . Tenga en cuenta que solo funciona para Eclipse 3.3 y Eclipse 3.4
Aquí está mi propia configuración para mi Eclipse que se ejecuta en la computadora portátil i7 2630M 16GB RAM, esta configuración se ha estado utilizando durante una semana, sin que se haya producido un solo locking, y Eclipse 3.7 funciona sin problemas.
-startup plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502 -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 -Xms1024m -Xmx4096m -XX:MaxPermSize=256m
Cálculos: para Win 7 x64
-startup ../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar --launcher.library ../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx_1.1.100.v20110502 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -Xms128m -Xmx512m -XX:MaxPermSize=256m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts -Dcom.sun.management.jmxremote -Declipse.p2.unsignedPolicy=allow
Y estos ajustes han funcionado como un encanto para mí. Estoy ejecutando OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24
Mi propia configuración (Java 1.7, modificar para 1.6):
-vm C:/Program Files (x86)/Java/jdk1.7.0/bin -startup plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar --launcher.library plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20100628 -showsplash org.eclipse.platform --launcher.XXMaxPermSize 256m --launcher.defaultAction openFile -vmargs -server -Dosgi.requiredJavaVersion=1.7 -Xmn100m -Xss1m -XgcPrio:deterministic -XpauseTarget:20 -XX:PermSize=400M -XX:MaxPermSize=500M -XX:CompileThreshold=10 -XX:MaxGCPauseMillis=10 -XX:MaxHeapFreeRatio=70 -XX:+UnlockExperimentalVMOptions -XX:+DoEscapeAnalysis -XX:+UseG1GC -XX:+UseFastAccessorMethods -XX:+AggressiveOpts -Xms512m -Xmx512m
A Eclipse le gusta mucha RAM. Use al menos -Xmx512M. Más si está disponible.
Si es como yo y tuvo problemas con la versión actual de Oracle de 1.6, entonces es posible que desee actualizar su JDK o establecer
-XX: MaxPermSize
. Más información está disponible aquí: http://java.dzone.com/articles/latest-java-update-fixes
XX: + UseParallelGC esa es la opción más increíble que haya existido !!!
-vm
C: \ Archivos de progtwig \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll
Para especificar qué versión de Java está utilizando y usar el dll en lugar de iniciar un proceso javaw
Esto es lo que uso (aunque los tengo en el acceso directo en lugar del archivo de configuración):
eclipse.exe -showlocation -vm “C: \ Java \ jdk1.6.0_07 \ bin \ javaw.exe” -vmargs -Xms256M -Xmx768M -XX: + UseParallelGC -XX: MaxPermSize = 128M