2012-03-22 16 views
33
java.lang.OutOfMemoryError: Java heap space 
Dumping heap to java_pid2584.hprof ... 
Heap dump file created [106948719 bytes in 4.213 secs] 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
at java.util.Arrays.copyOf(Arrays.java:2760) 
at java.util.Arrays.copyOf(Arrays.java:2734) 
at java.util.ArrayList.ensureCapacity(ArrayList.java:167) 
at java.util.ArrayList.add(ArrayList.java:351) 
at Main.main(Main.java:15) 

Ale kiedy otworzyć głowy zrzutu java_pid2584.hprof poprzez Eclipse Memory Analyzer, ale zawsze jest komunikat:Eclipse Memory Analyzer, ale zawsze pokazuje Wystąpił błąd wewnętrzny?

An internal error occurred during: 
"Parsing heap dump from **\java_pid6564.hprof'".Java heap space 
+4

Próbowałaś zwiększenie '-Xmx' parametr podczas uruchamiania Eclipse? –

+0

Jeśli "nie masz wystarczającej ilości pamięci RAM" nawet podczas określania -Xmx, to http://stackoverflow.com/questions/7254017/tool-for-analyzing-large-java-heap-dumps ma pewne pomysły – rogerdpack

+1

Śmiałem się tak mocno kiedy moje wysiłki zmierzające do analizy błędu pamięci nie powiodły się, ponieważ narzędzia miały za mało pamięci. Wesoły. –

Odpowiedz

-2

może zmniejszyć swój limit pamięci aplikacji, a następnie ponownie podjąć zrzut. Eclipse Memory Analyzer umieszcza plik zrzutu w pamięci - podejrzewam, że twój Eclipse ma mniej pamięci niż limit aplikacji.

Można również zrobić odwrotnie i zwiększyć limit pamięci dla Eclipse, ale jeśli aplikacja działa na serwerze, trudno będzie dopasować rozmiar pamięci.

+0

MAT robi _nie_ ma kompletny '.hprof' w pamięci! Mam zrzuty pamięci o pojemności 3 GB, które mogę analizować w mojej instancji Eclipse 1G ... –

+0

naprawdę? Ale kiedy otwieram plik 200M .hprof, zawsze jest błąd. – Gavin

+0

Moje rozwiązanie jest dokładnie takie samo jak Codeisee. MAT zawsze ma problemy z analizowaniem dużych plików. Zobacz: http://wiki.eclipse.org/index.php/MemoryAnalyzer/FAQ#Out_of_Memory_Error_while_Running_the_Memory_Analyzer. "Cóż, analiza dużych zrzutu sterty może również wymagać więcej miejsca na sterty.Daj trochę więcej pamięci" – wojand

59

Problem polega na tym, że Eclipse Memory Analyzer nie ma wystarczającej ilości miejsca na sterty, aby otworzyć plik zrzutu sterty.

Można rozwiązać ten problem w następujący sposób:

  1. otworzyć plik MemoryAnalyzer.ini

  2. zmienić domyślny -Xmx1024m do większego rozmiaru

+1

dzięki za odpowiedź, ale nie mogę znaleźć pliku MemoryAnalyzer.ini, gdzie jest lokalizacja? – Gavin

+2

znajduje się w domyślnym reż. Ale jeśli używasz wtyczki Zaćmienie, musisz powiększyć Xmx1024m konfiguracji zaćmienia – codeisee

+0

, ale problem jest nadal zakończony, gdy powiększam pamięć przy użyciu pliku eclipse.exe -vmargs -Xverify: none -XX : + UżyjParallelGC -XX: PermSize = 100M -Xms256M -Xmx600M -Duser.language = en – Gavin

-2

wystąpił błąd wewnętrzny. Przestrzeń sterty Java

Odp .: GO do swojego projektu Przestrzeń robocza otwórz .setowanie folderu Usuń wszystkie pliki z folderu .setting. po można skompilować teraz nie ma błędu jak przestrzeń Heap Enjoy :)

1

Próbowałem wszystkich rozwiązań tu dobrze, a jednocześnie coraz ten sam błąd i przyczyna zaćmienie próbuje otworzyć plik .hprof jako plik tekstowy z powodu niewłaściwego lub nieznanego powiązania typu pliku/edytora.

Rozwiązanie: Kliknij plik prawym przyciskiem myszy, wybierz opcję Otwórz za pomocą, a następnie wybierz opcję Inne i wybierz opcję Eclipse Memory Analyzer.

Praca z zrzutem 700MB i działała z zrzutem 2G na stosie zaćmienia około 600M.

19

Należy zauważyć, że w systemie OS X, aby zwiększyć ilość pamięci przydzielonej dla MAT, należy kliknąć prawym przyciskiem myszy Memory Analyzer.app i wyświetlić zawartość pakietu. Plik MemoryAnalyzer.ini znajduje się w katalogu/Contents/MacOS /.

3

Na OS X 11.5 (El Cap) modyfikowanie MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini nie działa! To dlatego, że szuka MemoryAnalyzer.ini w innym miejscu.

Na moim komputerze, to szukałem:

MemoryAnalyzer.app/Contents/Eclipse/MemoryAnalyzer.ini ale prawdziwe .ini było: MemoryAnalyzer.app/Contents/MacOS/MemoryAnalyzer.ini.

Aby zmiany zostały wprowadzone, skopiuj istniejący plik .ini do nowej lokalizacji.

Aby dowiedzieć się, gdzie MemoryAnalyzer szuka pliku ini, można uruchomić:

sudo su 
cd ...MemoryAnalyzer.app/Contents/MacOS/ 
dtruss ./MemoryAnalyzer 2>&1 | grep ini 
+0

To bardzo dobra odpowiedź :) była pomocna. – devJackie

6

rozwiązanie dla samej kwestii dla wtyczki Memory Analyzer w Eclipse na Mac OS X El Capitan.

Miałem do czynienia z tym samym problemem, ale z wtyczką eclipse i nie miałem żadnej aplikacji Memory Analyzer w folderze aplikacji. Rozwiązanie, które zadziałało, to:

  1. Kliknij prawym przyciskiem myszy ikonę Eclipse i wybierz opcję Pokaż zawartość pakietu.
  2. Idź do spisu treści> Eclipse
  3. Otwarte Eclipse.ini
  4. Zmiana wartości -Xmx1024m do -Xmx2048m
  5. Restart Eclipse
Powiązane problemy