2011-05-16 16 views
12

Desde que instalé la última jdk (1.6.0_25) estoy teniendo un problema muy molesto que constantemente hace que mi eclipse se reinicie. Esto sucede al hacer cualquier acción, no es un gran proyecto limpio ni nada.eclipse muere cada pocos minutos con la última jdk diciendo 'sin espacio en CodeCache para adaptadores'

Mi entorno es el siguiente:

win7, 64b

eclipse Version: 3.6.2 (64b) Build id: M20110210-1200

java version "1.6.0_25" Java(TM) SE Runtime Environment (build 1.6.0_25-b06) Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)

Antes de que tuviera una versión de JDK anterior (no sé qué número, pero era 1.6.0_21 o menos, también 64b).

Desde que instalé 1.6.0_25 mi eclipse muere cada pocos minutos. Me sale un cuadro de diálogo en la interfaz de usuario diciendo:

Problems occurred while trying to save the state of the workbench. Internal Error out of space in CodeCache for adapters

Y el registro muestra:

!SESSION Fri May 13 12:35:53 CEST 2011 ----------------------------------------- !ENTRY org.eclipse.equinox.launcher 4 0 2011-05-13 12:35:53.870 !MESSAGE Exception launching the Eclipse Platform: !STACK java.lang.VerifyError: (class: org/eclipse/osgi/framework/log/FrameworkLogEntry, method: getThrowable signature: ()Ljava/lang/Throwable;) Illegal constant pool index at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408)

Mis archivos eclipse.ini tiene esto:

-showlocation 
-showsplash org.eclipse.platform 
--launcher.defaultAction openFile 
-vm c:/jdk1.6.0/jre/bin/server/jvm.dll 
-vmargs 
-Dosgi.requiredJavaVersion=1.6 
-Declipse.p2.unsignedPolicy=allow 
-Djava.library.path=d:\dev\SlikSvn\bin 
-Xms256m 
-Xmx768m 
-Xss4m 
-XX:PermSize=256m 
-XX:MaxPermSize=512M 
-XX:CompileThreshold=5 
-XX:MaxGCPauseMillis=10 
-XX:MaxHeapFreeRatio=70 
-XX:+CMSIncrementalPacing 
-XX:+UnlockExperimentalVMOptions 
-XX:+UseG1GC 
-XX:+UseFastAccessorMethods 
-Dcom.sun.management.jmxremote 

alguien tiene una idea de cómo resolver ¿esta?

Respuesta

17

Aquí está una fijación de alguien que tiene una posible solución para el problema: http://www.apacheserver.net/trunk-build-problem-out-of-space-in-CodeCache-for-adapters-at1027069.htm

La solución sugerida es añadir -XX:ReservedCodeCacheSize=64m a las opciones de JVM. Si eso no ayuda, prueba con un número mayor.

(creo que el caché de código se asigna dentro de permgen, por lo que aumentar el tamaño del montón permgen también podría ayudar. Sin embargo, varias sugerencias en informes de errores de Oracle sugieren que estos problemas son causados ​​por la fragmentación del caché del código sugeriría que preasignación es una estrategia razonable. Pero en realidad sólo estoy adivinando.)

+0

@Tom Hawtin - ¿estás escuchando? ¿Puedes aportar algún "conocimiento interno"? –

+0

Intenté esto y parece hacer el truco ... – Persimmonium

-1

encontré error en su

-vm c:/jdk1.6.0/jre/bin/server/jvm.dll 

vm es decir, el parámetro máquina virtual eclipse.ini

está apuntando a jdk /jdk1.6.0 actualización a JDK (1.6.0_25)

también aumentan el tamaño de la memoria

-Xms256m 256>>512 
-Xmx768m 786>>1024 

Espera que trabaja

+0

que no es un error, tengo mi jdk (1.6.0_25) instalado en c: /jdk1.6.0/ – Persimmonium

+0

okies entonces por favor intente aumentar mem parametrs – Imran

2

que tenía el mismo problema. El aumento del tamaño de la caché de código es una buena idea, pero añadió

-XX:+UseCodeCacheFlushing

a las opciones de Java para el inicio de la JVM y se ha arreglado el problema también. Sé que este problema de StackOverflow es antiguo, pero espero que ahorre a otro usuario en algún momento.