Подтвердить что ты не робот

Eclipse умирает каждые несколько минут с последним jdk, говорящим "из космоса в CodeCache для адаптеров",

Так как я установил последнюю версию jdk (1.6.0_25), у меня возникла очень неприятная проблема, которая постоянно заставляет меня перезапускать eclipse. Это происходит при выполнении каких-либо действий, а не в большом чистом проекте или что-то еще.

Мое окружение следующее:

win7, 64b

eclipse Версия: 3.6.2 (64b) Код сборки: M20110210-1200

java version "1.6.0_25" Java (TM) SE Среда выполнения (build 1.6.0_25-b06) 64-разрядная серверная виртуальная машина Java HotSpot TM (сборка 20.0-b11, смешанный режим)

Раньше у меня была предыдущая версия jdk (не знаю, какое число, но было 1.6.0_21 или около того, также 64b).

Поскольку я установил 1.6.0_25, мое затмение умирает каждые несколько минут. Я получаю диалог в пользовательском интерфейсе, говорящий:

Проблемы при попытке сэкономить состояние рабочего места. внутренний Ошибка в пространстве в CodeCache для адаптеры

И журнал показывает:

! СЕССИЯ Пт 13 мая 12:35:53 CEST 2011 -----------------------------------------! ENTRY org.eclipse.equinox.launcher 4 0 2011-05-13 12: 35: 53.870! СООБЩЕНИЕ Исключение запуска Eclipse Платформа:! STACK java.lang.VerifyError: (класс: орг/затмение/OSGi/рамки/Журнал/FrameworkLogEntry, метод: getThrowable подпись: () Ljava/lang/Throwable;) Незаконный постоянный индекс пула в org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:200)   в sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Метод) при sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)   в sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)   в java.lang.reflect.Method.invoke(Method.java:597)   в org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)   в org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)   в org.eclipse.equinox.launcher.Main.run(Main.java:1408)

Мои файлы eclipse.ini имеют следующее:

-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

У кого-нибудь есть идея, как это решить?

4b9b3361

Ответ 1

Здесь сообщение от кого-то, у кого есть возможное обходное решение проблемы: http://www.apacheserver.net/trunk-build-problem-out-of-space-in-CodeCache-for-adapters-at1027069.htm

Предлагаемое решение - добавить -XX:ReservedCodeCacheSize=64m в параметры JVM. Если это не помогает, попробуйте большее число.

(Я считаю, что кеш-код выделяется в пределах permgen, поэтому также может помочь увеличение размера кучи переменных. Однако различные подсказки в отчетах об ошибках Oracle указывают на то, что эти проблемы вызваны фрагментацией кеша кода, и это что preallocation - разумная стратегия, но на самом деле я только догадываюсь.)

Ответ 2

У меня была та же проблема. Увеличение размера кеша кода - хорошая идея, но я добавил

-XX: + UseCodeCacheFlushing

для параметров JAVA для запуска JVM, и это также устранило проблему. Я знаю, что эта проблема StackOverflow устарела, но я надеюсь, что некоторое время сохраняет другого пользователя.

Ответ 3

Я нашел ошибку в вашем eclipse.ini

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

vm, т.е. параметр виртуальной машины указывает на jdk /jdk1.6.0 обновить его до jdk (1.6.0_25)

также увеличивают размеры памяти

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

Надежды, которые работают