Jak zmniejszyć zużycie pamięci przez Eclipse?

81

Wykorzystanie pamięci przez Eclipse 3.4 przebiega przez dach do punktu, w którym staje się problemem.

Mam załadowany prosty projekt BlackBerry, a użycie gwałtownie rośnie do prawie 400 MB, czasem więcej. Czy jest coś, co można zrobić, aby go obniżyć?

AngryHacker
źródło
7
Patrząc teraz wstecz na to pytanie, muszę powiedzieć, że byłbym zachwycony, gdybym mógł zmniejszyć użycie pamięci zaćmienia do 400 MB. W tej chwili staram się zmniejszyć go do 1 GB (plus kolejne 300 MB, jeśli dołączysz kopię Tomcata do faktycznego prowadzenia moich projektów ...).
Jules,
5
Piszę ten komentarz z przyszłości (2018), a Eclipse zajmuje 10 GB na mój obecny projekt.
Benjamin Barrois
Właśnie wróciłem z roku 2030, a Eclipse zajmuje 5 terabajtów przed załadowaniem projektu.
AngryHacker,

Odpowiedzi:

86

Eclipse 3.4 może zużywać znacznie więcej pamięci niż poprzednie wersje, dzięki wtyczce do sprawdzania pisowni .

Możesz wyłączyć wtyczkę, przechodząc do Okno -> Preferencje -> Ogólne -> Edytorzy -> Edytory tekstu -> Pisownia i odznaczając pole „Włącz sprawdzanie pisowni”.

Oczywiście, wskazówki dotyczące używania większych rozmiarów stert i lepszych odśmiecaczy również przyniosłyby korzyści.

Vineet Reynolds
źródło
12
Nie działa dla mnie. Nadal na 900-930 MB. Chodzi mi o to, co mogłoby to zrobić.
TheRealChx101
5
Świetna odpowiedź. 1 wtyczka wyłączona, około 50 innych, o których nigdy nie słyszałem / nigdy nie korzystałem. (Uwaga dla siebie, zacznij używać IntelliJ)
8bitjunkie
10
2016 i nadal stoję przed tym problemem. Chodzi mi o to, że 1 GB mojej przestrzeni Ram jest zajęte przez zaćmienie. Wyłączenie wtyczki do sprawdzania pisowni też nie pomogło.
Lucky
12
2017 i mój Eclipse używa teraz 1,7 GB pamięci RAM bez prawie żadnych dodatkowych wtyczek. To szaleństwo musi się skończyć.
Storm
18

Zaznaczenie General -> Show heap statusto umożliwi

Pasek stanu sterty Eclipse

w dolnym pasku. W ten sposób możesz ręcznie uruchomić moduł odśmiecania pamięci, kiedy tylko chcesz, klikając kosz. To nie jest poprawka, bardziej jak obejście, ale pomogło znacznie zmniejszyć zużycie pamięci RAM / procesora.

maaw
źródło
2
Pomogło mi to zidentyfikować, że przydzielone 4 GB pamięci RAM do zaćmienia w rzeczywistości nie było używane, mimo że system operacyjny wskazywał, że używane jest 4 GB. Zmniejszyłem ilość pamięci RAM przydzielonej do zaćmienia, aby zwolnić pamięć RAM dla innych aplikacji.
Navigatron,
1
Jako kombinezon narzędziowy Sping pochodzący z zaćmienia, więc działa to również z STS
Talib Hussain
9

W Eclipse Luna 4.4.1 próbował zmniejszyć zużycie pamięci w Eclipse. Udało mi się ogolić moje z 600 mb do 300 mb. Zrobiłem co następuje:

  • Wyłączono wtyczki aktywowane przy starcie, których nie używałem. Windows> Preferencje> Ogólne> Uruchamianie i zamykanie

  • Zamknięte projekty, nad którymi wtedy nie pracowałem.

Wskazówki / porady znajdziesz tutaj: http://blog.elijaa.org/2010/09/20/tricks-to-speed-up-eclipse-php-helios-pdt-2-2/

znak
źródło
8

Chociaż prawdopodobnie mógłbyś majstrować przy konfiguracji, usuwając różne wtyczki itp., Prawdopodobnie bardziej opłacalne będzie kupowanie większej ilości pamięci. Ile obecnie masz? Uznałbym, że maszyna deweloperska z mniej niż 2 GB pamięci jest w specyfikacji i podejrzewam, że wiele osób podwoiłoby to ...

Jon Skeet
źródło
3
Nie mogłem się bardziej zgodzić. 1 GB pamięci RAM to zaledwie 20-30 USD. Ile wart jest Twój czas? Uzyskanie zbioru wtyczek do pracy w Eclipse jest wystarczająco ciężką pracą bez konieczności (prawdopodobnie) niepotrzebnego majstrowania przy nim.
cletus
2
Mam maksymalnie 2 GB (to stary laptop). Problem polega na tym, że po załadowaniu symulatora BlackBerry, Visual Studio (usługi internetowe) i Chrome (do wyszukiwania rzeczy w sieci) laptop przechodzi do indeksowania. Ale Eclipse jest zdecydowanie największym przestępcą. Nie było tak źle z wersjami 3.3 czy 3.2.
AngryHacker,
2
Całkowicie się nie zgadzam. Maszyny deweloperskie powinny mieć niższą specyfikację niż zamierzona maszyna użytkownika końcowego o co najmniej 50% (procesor i pamięć RAM) właśnie z tego powodu.
finnw
4
@finnw: Co sprawia, że ​​myślisz, że obciążenie maszyny programisty jest podobne do obciążenia komputera użytkownika? Wiele aplikacji nie potrzebuje tak bardzo zasobów, jak IDE. Z pewnością powinieneś przetestować swoją aplikację na maszynie o niskiej specyfikacji, ale to nie znaczy, że musisz ją na niej tworzyć . W rzeczywistości najwyraźniej już zakładasz aplikację po stronie klienta. Jeśli tworzę aplikację internetową przeznaczoną dla urządzeń mobilnych, czy powinienem również tworzyć aplikacje na telefon komórkowy?
Jon Skeet
2
@Nate: To było bezpośrednie pytanie, ale bardzo często w przypadku przepełnienia stosu bardziej przydatne jest przyjrzenie się problemowi niż pytaniu . Jeśli ktoś konkatenuje wartości w SQL i zapomina o cudzysłowach, bezpośrednią odpowiedzią na pytanie byłoby dodanie cudzysłowów, ale rozwiązaniem problemu jest sparametryzowany SQL. Jeśli OP dotyczy około 400MB, to wydaje mi się, że ogólny brak pamięci dla maszyny deweloperskiej jest szerszym problemem.
Jon Skeet
8

Nowoczesne wersje Eclipse potrzebują sporo pamięci RAM, aby działać. Ale nadal powinien działać dość szybko na każdej nowoczesnej maszynie.

Zakładając, że masz wystarczającą ilość pamięci fizycznej (2 GB jest w porządku, chyba że masz uruchomionych wiele innych procesów lub używasz RAD), zapoznaj się z tym artykułem na temat wykorzystania pamięci Eclipse, aby uzyskać wskazówki dotyczące dostosowywania ustawień. Dwoma najczęstszymi winowajcami są zbyt niskie ustawienia Xmx i / lub MaxPermSize (domyślnie Xmx to 256M, a MaxPermSize to 64M).

Wartości można modyfikować, przekazując argumenty wiersza poleceń lub poprawiając plik eclipse.ini w lokalizacji instalacji Eclipse.

Powinieneś otrzymać coś takiego:

...
-vmargs
-Xms128m
-Xmx1024m 
-XX:MaxPermSize=128m
Bogaty sprzedawca
źródło
1
MaxPermSize już tam nie ma
Ray Kim,
7

Usuń +UseG1GCopcję z eclipse.ini. Czytałem stąd, że jest używany tylko do około 6 GB pamięci sterty.

Ebru Yener
źródło
3
Tak, to zadziałało dla mnie. Wymieniłem -XX:+useG1GCz -XX:+UseSerialGCa kwestia pamięci zniknął. Brzmi jak błąd w G1GC.
Don Smith
1
Przełączam na -XX:+UseSerialGCwycięcie> 300mb. kciuki w górę
Aman
6

Moje Eclipse przejmuje 800 MB rezydentne i 2 GB wirtualne (część z nich być może wymieniona). Java może być świrem, przez cały czas daje Javie złą opinię.

Jest jednak coś, o czym wiele osób nie wie: przyrostowy odśmiecacz. -Xincgc Efektem ubocznym jest to, że od czasu do czasu przekazuje pamięć systemowi. Domyślnie Java po prostu pobiera i pobiera, a kiedy nie potrzebuje już pamięci, zatrzymuje ją dla siebie. Incgc to inna strategia, w której rozsądniej jest założyć, że pamięć można zwrócić systemowi bez problemów. Może to jednak wpłynąć na wydajność.

Istnieje wiele ustawień czyszczenia pamięci. Możesz również mieć wiele wątków obsługujących GC. Robi to równoległy GC. Nie jestem pewien, czy ktoś zwraca pamięć, nie myśl tak.

Mikrofon
źródło
A jak zmienić opcję garbage collectora na Eclipse?
Matthieu
3
Rzeczy się zmieniły. Domyślny GC w Javie 8 jest teraz generacyjnym zbieraczem elementów bezużytecznych, który również zwraca pamięć do systemu. Nie chcesz już z tego kpić ...
Mike
1
W moim przypadku java 8 z przyjemnością zachowa ponad 3 GB, gdy rzeczywiste użycie jest mniejsze niż 0,5 GB, więc niestety muszę z tego kpić.
nsandersen
3

Jeśli 400 MB pamięci RAM jest dla Ciebie dużym problemem, możesz wypróbować inne IDE. Eclipse przechowuje wiele informacji o stanie, z których część lub większość w rzeczywistości nie jest Ci potrzebna. To wybór projektu.

W tej chwili mam ten sam projekt otwarty zarówno w Eclipse, jak i QtCreator: po czystej przebudowie Eclipse używa 156 MB RAM, Qt Creator jest zadowolony z 66 MB.

György Andrasek
źródło
2

Możesz wypróbować 64-bitową wersję Eclipse z 64-bitową wersją JDK w systemie Windows 7. Oba spowodowały dziwne problemy z platformą zewnętrzną, z którą muszę pracować. 32-bitowy JRockit (teraz darmowy) od Oracle wydaje się być szybszy i trochę lepszy w pamięci. Oto moje ustawienia Eclipse.ini:

To moja karczma zaćmienia

-startup
plugins/org.eclipse.equinox.launcher_1.1.1.R36x_v20101122_1400.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.2.R36x_v20101222
-nosplash
org.eclipse.platform
--launcher.XXPermSize
512m
--launcher.XXMaxPermSize
512m
--launcher.defaultAction
openFile
-vm
C:/Program Files (x86)/Java/jrockit-jdk1.6.0_31-R28.2.3-4.1.0/jre/bin
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Xquickstart
-XX:+AggressiveHeap
-XX:+AggressiveOpts
-XX:+UseParallelOldGC
-XX:ParallelGCThreads=2
-XX:ThreadPriorityPolicy=1
-Xverify:none
-Xms1100m
-Xmx1100m

Przerzuciłem się na 32-bitowy JRockit JDK, który wydaje się trochę szybszy dla Eclipse. Wyłączam się i nie instaluję więcej niż potrzebuję. Dla każdego rodzaju tworzenia aplikacji (Android, J2EE, tylko Spring, ...) mam różne instalacje Eclipse. Miejsce na dysku twardym jest tanie. Wtedy mogę mieć tylko wtyczki, których potrzebuję do każdego z nich. Nigdy nie chciałbym, aby wszystkie narzędzia Androida ładowały się, gdybym ich nie używał. STS jest również dobry tylko do rzeczy wiosennych i mam jeden tylko do pracy w chmurze OpenShift.

Tim Spann
źródło
Jestem trochę zdezorientowany, ponieważ najpierw masz --launcher.XXMaxPermSize 512m, a następnie --launcher.XXMaxPermSize 256m (i kilka zduplikowanych linii, np. DefaultAction, a następnie nosplash razem z showsplash). Czy używa pierwszej znalezionej konfiguracji?
jambriz
nie powinno tam być drugiego. sprawdziłem ponownie i nie mam tego w moim obecnym. Również jeśli używasz JDK 8 różnych parametrów
Tim Spann
1

Spróbuj wyłączyć wtyczki eclipse. Eclipse pochłaniało połowę mojej pamięci, kiedy miałem otwartą wtyczkę saros.

googoo
źródło