Jakie są najlepsze ustawienia JVM dla Eclipse? [Zamknięte]


315

Jakie są najlepsze ustawienia JVM, jakie znalazłeś do uruchamiania Eclipse?


8
Nowe i ulepszone eclipse.iniustawienia dla Helios 3.6 są tutaj (poniżej, w nowej odpowiedzi): stackoverflow.com/questions/142357/…
VonC

6
To niesamowite, że pytanie zamknięte jako mało konstruktywne ma tak wysoką ocenę ...
bancer

1
To pytanie zostało zadane, gdy najnowszą odpowiedzią na takie pytanie w 2008 r. Była eclipsezone.com/eclipse/forums/t20732.html . Zestaw odpowiedzi urósł, ponieważ wydano nowe wersje środowiska Eclipse i Java, kolejne aktualizacje zachowały świeżość odpowiedzi. Zamknięcie pytania spowoduje, że odpowiedzi staną się nieaktualne. Jedynym sposobem, w jaki mogę przemyśleć to pytanie, byłoby sprecyzowanie jego wersji, co moim zdaniem jest gorsze, ponieważ spowodowałoby, że wiele pytań odpowiadałoby w zasadzie na ten sam problem
Craig Angus

10
Zgadzam się - takie zamykające pytania to szaleństwo - szaleństwo mówię wam - takie pytania są najbardziej przydatne i interesujące na stronie!
Luigi Plinge

3
Zgodnie z powodem zamknięcia: „Oczekujemy, że odpowiedzi będą zazwyczaj dotyczyły faktów, referencji lub konkretnej wiedzy specjalistycznej”. Myślę, że zamknięcie tego pytania jest trudnością. Bądźmy ostrożni, korzystając z uprawnień cenzury. Powiedziałbym, że w razie wątpliwości lepiej „pozwolić wiedzy być wolną” i otworzyć się.
luiscolorado

Odpowiedzi:


315

Znowu jest ta pora roku: „eclipse.ini weź 3” ustawienia cofają się!

Ustawienia Eclipse Helios 3.6 i 3.6.x.

alt text http://www.eclipse.org/home/promotions/friends-helios/helios.png

Po ustawieniach Eclipse Ganymede 3.4.x i Eclipse Galileo 3.5.x , oto dogłębne spojrzenie na „zoptymalizowany” plik ustawień eclipse.ini dla Eclipse Helios 3.6.x:

( przez „zoptymalizowany” mam na myśli możliwość uruchomienia pełnoprawnego Eclipse na naszej gównianej stacji roboczej w pracy, niektóre stare P4 z 2002 roku z 2Go RAM i XPSp3. Ale przetestowałem te same ustawienia na Windows7 )

Eclipse.ini

alternatywny tekst

OSTRZEŻENIE : w przypadku platformy innej niż Windows należy użyć zastrzeżonej opcji Sun -XX:MaxPermSizezamiast zastrzeżonej opcji Eclipse --launcher.XXMaxPermSize.
To znaczy: Chyba że używasz najnowszej wersji 7 jdk6u21 . Zobacz sekcję Oracle poniżej.

-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

Uwaga:
Dostosuj p2.reconciler.dropins.directorydo wybranego zewnętrznego katalogu.
Zobacz tę SO odpowiedź . Chodzi o to, aby móc upuszczać nowe wtyczki do katalogu niezależnie od dowolnej instalacji Eclipse.

Poniższe sekcje szczegółowo opisują zawartość tego eclipse.inipliku.


Przerażający Oracle JVM 1.6u21 (przed kompilacją 7) i Eclipse ulega awarii

Andrew Niefer ostrzegł mnie o tej sytuacji i napisał post na blogu o niestandardowym argumencie vm ( -XX:MaxPermSize) i może spowodować, że vms innych dostawców w ogóle się nie uruchomi.
Ale wersja Eclipse tej opcji ( --launcher.XXMaxPermSize) nie działa z nowym JDK (6u21, chyba że używasz wersji 6u21 7, patrz poniżej).

The finałrozwiązanie znajduje się na Wiki Eclipse , a dla Helios na Windows tylko z wersją 6u21 przed kompilacją 7 :

(eclipse_home) /plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.0.v20100503

Otóż ​​to. Brak ustawień do poprawiania w tym miejscu (ponownie, tylko dla Helios w systemie Windows z wersją wcześniejszą 6u21 7 ).
Dla platformy niż Windows, trzeba powrócić do opcji zastrzeżonych Sun -XX:MaxPermSize.

Problem polega na regresji: identyfikacja JVM nie powiodła się z powodu zmiany marki Oracle w java.exe i spowodowała błąd 319514 w Eclipse.
Andrew zadbał o Bug 320005 - [launcher] --launcher.XXMaxPermSize: isSunVMpowinien zwrócić wartość true dla Oracle , ale będzie to dotyczyło tylko Helios 3.6.1.
Francis Upton , inny komentator Eclipse, zastanawia się nad każdą sytuacją .

Aktualizacja u21b7, 27 lipca :
Oracle zarejestrowało zmianę dla następnej wersji Java 6 i nie wdroży jej ponownie, aż do JDK 7 .
Jeśli używasz jdk6u21 build 7 , możesz powrócić do --launcher.XXMaxPermSize(opcja zaćmienia) zamiast -XX:MaxPermSize(opcja niestandardowa). Auto-wykrywanie dzieje w C wyrzutnia podkładka będzie nadal szukać „ ” ciąg, ale z 6u21b7, to będzie teraz działać - po raz kolejny.
eclipse.exeSun Microsystems

Na razie wciąż zachowuję -XX:MaxPermSizewersję (ponieważ nie mam pojęcia, kiedy wszyscy uruchomią zaćmienie właściwego JDK).


Domniemany `-startup` i` --launcher.library`

W przeciwieństwie do poprzednich ustawień dokładna ścieżka dla tych modułów nie jest już ustawiona, co jest wygodne, ponieważ może różnić się w zależności od różnych wersji Eclipse 3.6.x:

  • uruchomienie: jeśli nie zostanie określone, plik wykonywalny będzie szukał w katalogu wtyczek org.eclipse.equinox.launcherpakietu z najwyższą wersją.
  • launcher.library: Jeśli nie jest określony, plik wykonywalny szuka w pluginskatalogu odpowiedniego org.eclipse.equinox.launcher.[platform]fragmentu z najwyższą wersją i korzysta z udostępnionej biblioteki o nazwie eclipse_*wewnątrz.

Użyj JDK6

JDK6 jest teraz jawnie wymagany do uruchomienia Eclipse:

-Dosgi.requiredJavaVersion = 1.6

To pytanie SO zgłasza pozytywne przypadki rozwoju w systemie Mac OS.


+ UnlockExperimentalVMOptions

Poniższe opcje są częścią eksperymentalnych opcji Sun JVM.

-XX:+UnlockExperimentalVMOptions
-XX:+UseG1GC
-XX:+UseFastAccessorMethods

W tym poście na blogu zgłoszono, że potencjalnie mogą przyspieszyć Eclipse.
Zobacz wszystkie opcje JVM tutaj, a także na oficjalnej stronie opcji Java Hotspot .
Uwaga: szczegółowa lista raportów opcji , które UseFastAccessorMethodsmogą być domyślnie aktywne.

Zobacz także „Zaktualizuj JVM” :

Przypominamy, że G1 jest nowym śmieciarzem w ramach przygotowań do JDK 7, ale jest już używany w wersji 6 z U17.


Otwieranie plików w Eclipse z wiersza poleceń

Zobacz post na blogu od Andrew Niefera, który zgłasza tę nową opcję:

--launcher.defaultAction
openFile

Mówi to programowi uruchamiającemu, że jeśli jest wywoływany z wiersza poleceń, który zawiera tylko argumenty, które nie zaczynają się od „ -”, wówczas argumenty te należy traktować tak, jakby następowały po nim „ --launcher.openFile”.

eclipse myFile.txt

Jest to rodzaj wiersza polecenia, który program uruchamiający otrzyma w systemie Windows po dwukrotnym kliknięciu pliku skojarzonego z zaćmieniem, lub wybraniu plików i wybraniu „ Open With” lub „ Send To” Eclipse.

Ścieżki względne zostaną rozstrzygnięte najpierw względem bieżącego katalogu roboczego, a następnie względem katalogu programu eclipse.

Zobacz błąd 301033 w celach informacyjnych. Pierwotnie błąd 4922 (październik 2001, naprawiony 9 lat później).


p2 i monit o niepodpisane okno dialogowe

Jeśli masz dość tego okna dialogowego podczas instalacji wielu wtyczek:

alternatywny tekst

, dodaj w eclipse.ini:

-Declipse.p2.unsignedPolicy=allow

Zobacz ten wpis na blogu z Chrisem Aniszczy , a raport o błędzie 235526 .

Chcę powiedzieć, że badania bezpieczeństwa potwierdzają fakt, że im mniej podpowiedzi, tym lepiej.
Ludzie ignorują rzeczy, które pojawiają się w wyniku czegoś, co chcą zrobić.

W przypadku wersji 3.6 nie powinniśmy wyświetlać ostrzeżeń w środku przepływu - bez względu na to, jak bardzo uprościć, ludzie po prostu je zignorują.
Zamiast tego powinniśmy zebrać wszystkie problemy, nie instalować tych pakietów z problemami i zamiast tego doprowadzić użytkownika z powrotem do punktu w przepływie pracy, w którym można go naprawić - dodać zaufanie, luźniej skonfigurować politykę bezpieczeństwa itp. Nazywa się to „bezpieczne inscenizacja ” .

---------- http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif alt text http://www.eclipse.org/home/categories/images/wiki.gif

Dodatkowe opcje

Te opcje nie są eclipse.iniwymienione powyżej, ale mogą się przydać w razie potrzeby.


Problem „user.home” w systemie Windows7

Kiedy zacznie się eclipse, odczyta plik kluczy (w którym przechowywane są hasła), plik znajdujący się w user.home.
Jeśli z jakiegoś powodu user.homenie rozwinie się ono poprawnie w pełnoprawną ścieżkę, Eclipse nie uruchomi się.
Początkowo podniesiony w tym pytaniu SO , jeśli wystąpi to, musisz ponownie zdefiniować plik kluczy do wyraźnej ścieżki (koniec user.home do rozwiązania na początku)

Dodaj w eclipse.ini:

-eclipse.keyring 
C:\eclipse\keyring.txt

Zostało to śledzone przez błąd 300577 , został rozwiązany w innym pytaniu SO .


Tryb debugowania

Czekaj, w Eclipse jest więcej niż jeden plik ustawień.
jeśli dodasz do swojej eclipse.iniopcji:

-debug

, włączysz tryb debugowania, a Eclipse wyszuka inny plik ustawień: .optionsplik, w którym możesz określić niektóre opcje OSGI.
I to świetnie, gdy dodajesz nowe wtyczki do folderu dropins.
Dodaj w pliku .options następujące ustawienia, zgodnie z opisem w blogu „ Diagnoza Dropins :

org.eclipse.equinox.p2.core/debug=true
org.eclipse.equinox.p2.core/reconciler=true

P2 poinformuje cię, jakie pakiety zostały znalezione w dropins/folderze, jakie żądanie zostało wygenerowane i jaki jest plan instalacji. Może nie jest to szczegółowe wyjaśnienie tego, co się faktycznie wydarzyło i co poszło nie tak, ale powinno dać ci mocne informacje o tym, od czego zacząć:

  • czy twój pakiet był w planie?
  • Czy to problem z instalacją (błąd P2)
  • a może po prostu włączenie Twojej funkcji nie jest optymalne?

Pochodzi z błędu 264924 - [uzgadnianie] Brak diagnozy problemów z dropinami , co ostatecznie rozwiązuje następujący problem:

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

Jest to problematyczna konfiguracja, ponieważ OCL zależy od brakującego pola elektromagnetycznego.
3.5M5 nie zapewnia diagnozy tego problemu.

Rozpocznij zaćmienie.
Żadnych oczywistych problemów. Nic w dzienniku błędów.

  • Help / About / Pluginszczegóły pokazują org.eclipse.ocl.doc, ale nie org.eclipse.ocl.
  • Help / About / Configurationszczegóły nie zawierają wzmianki (diagnostycznej) org.eclipse.ocl.
  • Help / Installation / Information Installed Softwarenie wspomina o org.eclipse.ocl.

Gdzie są ładne markery błędów?


Manifest Classpath

Zobacz ten post na blogu :

  • W Galileo (aka Eclipse 3.5) JDT zaczął rozwiązywać oczywistą ścieżkę klas w bibliotekach dodanych do ścieżki kompilacji projektu. Działa to niezależnie od tego, czy biblioteka została dodana do ścieżki kompilacji projektu bezpośrednio, czy za pośrednictwem kontenera ścieżek klas, takiego jak biblioteka bibliotek użytkownika udostępniana przez JDT lub implementowana przez stronę trzecią.
  • W Helios to zachowanie zostało zmienione, aby wykluczyć kontenery ścieżek klas z oczywistego rozpoznawania ścieżki klas.

Oznacza to, że niektóre z twoich projektów mogą się już nie kompilować w Helios.
Jeśli chcesz przywrócić zachowanie Galileo, dodaj:

-DresolveReferencedLibrariesForContainers=true

Zobacz odniesienia do błędu 305037 , błędu 313965 i błędu 313890 .


Stos IPV4

To pytanie SO wspomina o potencjalnej poprawce, gdy nie ma dostępu do witryn aktualizacji wtyczek:

-Djava.net.preferIPv4Stack=true

Wspomniano tutaj na wypadek, gdyby mógł pomóc w konfiguracji.


Potencjalne optymalizacje JVM1.7x64

W tym artykule opisano:

Dla przypomnienia, najszybszymi opcjami, jakie do tej pory znalazłem do mojego testu laboratoryjnego z JVM n Windows 1.7 x64 są:

-Xincgc 
-XX:-DontCompileHugeMethods 
-XX:MaxInlineSize=1024  
-XX:FreqInlineSize=1024 

Ale wciąż nad tym pracuję ...


Zgodnie z tym linkiem, oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#icms , musisz mieć -XX: + UseConcMarkSweepGC, aby użyć -XX: + CMSIncrementalMode. Tego brakuje w powyższym przykładzie. Nie potrzebowalibyśmy CMSIncrementalMode w przypadku korzystania z G1 GC, mam rację?
RuntimeException

1
Hej, G1GC to katastrofa na Macu. Zjada całą maszynę, wymagając ponownego uruchomienia.
bmargulies

4
@VonC: -XX:CompileThreshold=5powoduje dla mnie OGROMNE spowolnienia. Samo pozbycie się tej opcji skróciło czas uruchamiania Eclipse do 17 sekund z> 1 min !! Nie wspominając już o tym, jak strasznie wolne było IDE. Zobacz ten link
TrinitronX

3
@TrinitronX: (i właściwie wszyscy), -XX:CompileThreshold=5ma bardzo niską wartość (domyślnie = 10000). Ta wartość reprezentuje liczbę wywołań metod / gałęzi przed jej skompilowaniem. Zbyt niska wartość spowoduje przedwczesne zapełnienie pamięci CodeCache, a konsola może zgłosić: CodeCache is full. Compiler has been disabled Po wyłączeniu kompilatora zauważysz spowolnienie w aplikacji. Istnieją dwa sposoby, aby to naprawić: 1. Użyj -XX:CompileThreshold=1000(dostosuj ten numer) lub 2. Spróbuj zwiększyć rozmiar pamięci podręcznej kodu za pomocą -XX:ReservedCodeCacheSize=64m(podwójnie z domyślnej 32 m)
Drupad Panchal

4
dla Linuksa użyj /usr/lib/jvm/java-6-sun-1.6.0.26/jre/lib/i386/client/libjvm.so dla lokalizacji
jvm

76

Ustawienia Eclipse Galileo 3.5 i 3.5.1

Obecnie (listopad 2009 r.) Testuję z aktualizacją jdk6 17 następujący zestaw konfiguracji opcji (z Galileo - eclipse 3.5.x, patrz poniżej 3.4 lub nowszy dla Helios 3.6.x ):
(oczywiście, dostosuj ścieżki względne obecne w tym pliku eclipse.ini do prawidłowych ścieżek konfiguracji)

Uwaga: w przypadku eclipse3.5 zamień startupi launcher.librarywiersze:

-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

eclipse.ini 3.5.1

-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

Zobacz także moją oryginalną odpowiedź powyżej, aby uzyskać więcej informacji.

Zmiany (od lipca 2009)

  • odnosi się do programu uruchamiającego, a nie ramy
  • współdzielone wtyczki: org.eclipse.equinox.p2.reconciler.dropins.directoryopcja.
  • Galileo obsługuje w pełni względne ścieżki dla obszaru roboczego lub maszyny wirtualnej (unikaj konieczności modyfikowania tych z jednej instalacji zaćmienia do drugiej, jeśli oczywiście JVM i obszar roboczy pozostają takie same)
    Przedtem te względne ścieżki były przepisywane na bezwzględne podczas uruchamiania środowiska Eclipse ...
  • Możesz także skopiować katalog JRE instalacji Java JDK w katalogu eclipse

Ostrzeżenia

Wystąpił błąd z ignorowanymi punktami przerwania faktycznie związanymi z JDK.
Do uruchomienia zaćmienia używaj JDK6u16 lub nowszego (możesz wtedy zdefiniować tyle JDK, które chcesz skompilować w ramach zaćmienia: to nie dlatego, że uruchamiasz zaćmienie za pomocą JDK6, które będziesz musiał skompilować z tym samym JDK).

Max

Zwróć uwagę na użycie:

--launcher.XXMaxPermSize
384m
-vmargs
-XX:MaxPermSize=128m

Jak udokumentowano w Wiki Eclipse ,

Eclipse 3.3 obsługuje nowy argument do wyrzutni: --launcher.XXMaxPermSize.
Jeśli używana maszyna wirtualna jest maszyną wirtualną firmy Sun i nie ma jeszcze -XX:MaxPermSize=argumentu maszyny wirtualnej, program uruchamiający automatycznie doda -XX:MaxPermSize=256mdo listy używanych maszyn wirtualnych.
Program uruchamiający 3.3 jest w stanie zidentyfikować maszyny wirtualne Sun tylko w systemie Windows.

Jak szczegółowo opisano w tym wpisie :

Nie wszystkie vms akceptują -XX:MaxPermSizeargument, dlatego jest on przekazywany w ten sposób. Mogą występować (lub nie) problemy z identyfikacją Sun VMS.
Uwaga: Eclipse 3.3.1 ma błąd, w którym program uruchamiający nie może wykryć maszyny wirtualnej Sun, a zatem nie używa prawidłowego rozmiaru PermGen. Wygląda na to, że był to znany błąd w systemie Mac OS X również w wersji 3.3.0 .
Jeśli używasz jednej z tych kombinacji platform, dodaj -XXflagę eclipse.inizgodnie z powyższym opisem.

Uwagi:

  • 384mwiersz „ ” tłumaczy się na =384mczęść argumentu maszyny wirtualnej „ ”, jeśli w maszynie wirtualnej rozróżniane są wielkie i małe litery „ m”, to tak samo jest z tym argumentem.
  • --launcher.przedrostek „ ” określa, że ​​argument jest używany przez sam program uruchamiający i został dodany do argumentów specyficznych dla programu uruchamiającego, aby uniknąć kolizji nazw z argumentami aplikacji. (Inne przykłady --launcher.library, --launcher.suppressErrors)

-vmargs -XX:MaxPermSize=384mCzęścią jest argument przekazany bezpośrednio do maszyny wirtualnej, z pominięciem wyrzutnię całkowicie i bez kontroli na zbywcę VM jest używany.


Miałem z tym kilka problemów w najnowszym wydaniu Eclipse 3.5x64: --launcher.library plugins / org.eclipse.equinox.launcher.win32.win32.x86_64_1.0.200.v20090519 - wtyczki startowe / org.eclipse.equinox.launcher_1 .0.200.v20090520.jar również musiałem użyć jdk JAVA_HOME / bin / javaw, dla wtyczki m2eclipse. W przeciwnym razie jest to szalenie niesamowite.
Nathan Feger

Czy ci dwaj nie robią tego samego? „--launcher.XXMaxPermSize 384m” i „-XX: MaxPermSize = 128m”
Igor Zinov'yev

@Igor Zinov'yev: jest nieco zbędny, ale oba mogą być przydatne, w zależności od platformy i wersji zaćmienia. Zresetowałem je do tej samej wartości i uzupełniałem swoją odpowiedź dokumentacją dotyczącą tych ustawień.
VonC


Jeśli zawsze chcesz używać najnowszej i najlepszej maszyny wirtualnej, dlaczego argument „-Dosgi.requiredJavaVersion = 1.5” nie jest używany w wersji 1.6?
Tony R

63

Ustawienia Eclipse Ganymede 3.4.2


Aby uzyskać najnowsze ustawienia, zobacz ustawienia Eclipse Galileo 3.5 powyżej .


JDK

Moim zdaniem najlepsze ustawienie JVM zawsze obejmuje najnowszy JDK, jaki można znaleźć (na razie jdk1.6.0_b07 do b16, z wyjątkiem b14 i b15 )

eclipse.ini

Nawet przy tych dość niskich ustawieniach pamięci mogę uruchamiać duże projekty Java (wraz z serwerem WWW) na moim starym (2002) pulpicie z 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

Zobacz SO odpowiedź GKelly za i wpis w blogu Piotra Gabryanczyk w celu uzyskania szczegółowych informacji na temat nowych opcji.

Monitorowanie

Możesz również rozważyć uruchomienie:

C:\[jdk1.6.0_0x path]\bin\jconsole.exe

Jak powiedzieliśmy w poprzednim pytaniu na temat zużycia pamięci .


1
do czego służy -Xssv2m, kiedy włączę go do ustawień vm, zaćmienie się nie uruchamia, przejrzał dokumentację ustawień JVM, ale nie mógł go znaleźć
Craig Angus

Racja ... to była literówka: Xss2m, a nie Xssv2m: -Xss określa rozmiar stosu: -Xss1024k. Jeśli przestrzeń stosu jest zbyt mała, w końcu zobaczysz klasę wyjątków java.lang.StackOverflowError (mityczny komunikat o błędzie tutaj ;-))
VonC

W końcu przeszedłem do korzystania z drugiego zestawu ustawień i zdziwiłem się, jak dobrze działają!
Craig Angus,

Od jakiegoś czasu miałem okazję korzystać z ustawień, zaćmienie wydaje się szybkie, ale tworzenie kompilacji mrówek wydaje się wolniejsze?
Craig Angus

@Craig Angus: dziwne, jakiej wersji zaćmienia używasz? A która wersja mrówki jest w nim zawarta?
VCC

20

Ustawienia Eclipse Indigo 3.7.2 (64-bitowy Linux)

Ustawienia dla Sun / Oracle java w wersji „1.6.0_31” i Eclipse 3.7 uruchomionych na Linuksie x86-64:

-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

Pamiętaj, że zużywa to tylko 200 MB na stosie i 150 MB na stosie. Jeśli używasz ogromnych wtyczek, możesz zwiększyć zarówno limity „-Xmx200m”, jak i „-XX: MaxPermSize = 150m”.

Podstawowym celem optymalizacji dla tych flag było zminimalizowanie opóźnienia we wszystkich przypadkach, a jako dodatkowy cel optymalizacji zminimalizował zużycie pamięci.


Działa dla mnie fantastycznie (chociaż podwoiłem wartości ustawień związanych z pamięcią, wciąż jest niska i błyskawicznie się burzy!)
Aktau

Masz zarówno -XX: + UseConcMarkSweepGC, jak i -XX: + UseParNewGC. Dlaczego? Nie sądzę, że możesz używać obu śmieciarek, i nie jestem pewien, który z nich w końcu zostanie wykorzystany.
herman

Myślałem, że -XX: + UseConcMarkSweepGC służy do zbierania śmieci starej generacji, a -XX: + UseParNewGC jest używany do zbierania śmieci przez eden.
Mikko Rantalainen


3
Każda opcja i każdy argument opcji musi znajdować się w osobnej linii.
Josh Clemm

14

-showocation

Aby ułatwić dwukrotne uruchomienie zaćmienia i wiedzieć, z którym obszarem roboczym masz do czynienia

Eclipse 3.6 dodaje opcję preferencji, aby określić, co pokazać, Workspace name (shown in window title)co działa znacznie lepiej niż -showlocationz trzech powodów:

  1. Nie ma potrzeby ponownego uruchamiania zaćmienia, aby miało to wpływ.
  2. Możesz wybrać krótki kod.
  3. Pojawia się jako pierwszy, przed perspektywą i nazwą aplikacji.

9

Jeśli korzystasz z aktualizacji jdk6 14, sugeruję użycie modułu śmieciowego G1, który wydaje się poprawiać wydajność.

Aby to zrobić, usuń te ustawienia:

-XX
: + UseConcMarkSweepGC -XX
: + CMSIncrementalMode -XX : + CMSIncrementalPacing

i zastąp je następującymi:

-XX
: + UnlockExperimentalVMOptions -XX : + UseG1GC


9

Jeśli używasz 32-bitowego JDK / JRE systemu Linux + Sun , zmień „-vm” na:

-vm 
[your_jdk_folder]/jre/lib/i386/client/libjvm.so

Jeśli używasz Linux + Sun JDK / JRE 64bits , zmień „-vm” na:

-vm
[your_jdk_folder]/jre/lib/amd64/server/libjvm.so

Działa mi to dobrze w Ubuntu 8.10 i 9.04


Czy to ma mieć Eclipse używające JDK jako domyślnego środowiska?
Thorbjørn Ravn Andersen

Można tego użyć, aby środowisko Eclipse korzystało z określonego / innego JDK jako środowiska domyślnego.
Gilberto Olimpio

7

Możesz także spróbować uruchomić z JRockit . Jest to JVM zoptymalizowana pod kątem serwerów, ale wiele długo działających aplikacji klienckich, takich jak IDE, działa bardzo dobrze na JRockit. Zaćmienie nie jest wyjątkiem. JRockit nie ma perm-spacji, więc nie trzeba go konfigurować.

Możliwe jest ustawienie docelowego czasu pauzy (ms), aby uniknąć długich pauz gc blokujących interfejs użytkownika.

-showsplash
org.eclipse.platform
-vm
 C:\jrmc-3.1.2-1.6.0\bin\javaw.exe 
-vmargs
-XgcPrio:deterministic
-XpauseTarget:20

Zazwyczaj nie przejmuję się ustawieniem -Xmx i -Xms i pozwalam JRockitowi powiększać stertę, jeśli uzna to za konieczne. Jeśli uruchomisz aplikację Eclipse za pomocą JRockit, możesz także monitorować, profilować i znajdować wycieki pamięci w aplikacji za pomocą pakietu narzędzi JRockit Mission Control. Pobierz wtyczki z tej witryny aktualizacji . Uwaga: działa tylko w Eclipse 3.3 i Eclipse 3.4


W przeszłości prowadziłem zaćmienie na JRockit i biegałem bardzo dobrze
Craig Angus

5

Oto moje własne ustawienie dla mojego Eclipse działającego na laptopie i7 2630M 16 GB RAM, to ustawienie było używane przez tydzień, bez jednego awarii, a Eclipse 3.7 działa płynnie.

-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

Obliczenia: dla Win 7 x64

  • Xms = pamięć fizyczna / 16
  • Xmx = pamięć fizyczna / 4
  • MaxPermSize = Taki sam jak wartość domyślna, która wynosi 256 m

Wow laptop 16G? Jestem ciekawy. Czy to System76? : D
Phil,

5
-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

A te ustawienia działały dla mnie jak urok. Używam OS X10.6, Eclipse 3.7 Indigo, JDK1.6.0_24


Dzięki, to trochę pomogło mojej wydajności (podobna konfiguracja). Ale podniosłem maksymalny rozmiar sterty do 1024 MB.
Jeff Evans

4

Moje własne ustawienia (Java 1.7, zmodyfikuj do wersji 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

3

Eclipse lubi dużo pamięci RAM. Użyj co najmniej -Xmx512M. Więcej, jeśli dostępne.



2

XX: + UseParallelGC to najbardziej niesamowita opcja w historii !!!


1

-vm
C: \ Program Files \ Java \ jdk1.6.0_07 \ jre \ bin \ client \ jvm.dll

Aby określić, której wersji Java używasz, i użyj biblioteki dll zamiast uruchamiania procesu javaw


0

Oto, czego używam (chociaż mam je w skrócie zamiast pliku ustawień):

eclipse.exe -showlocation -vm "C: \ Java \ jdk1.6.0_07 \ bin \ javaw.exe" -vmargs -Xms256M -Xmx768M -XX: + UseParallelGC -XX: MaxPermSize = 128M

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.