Jak wykryć przyczynę OutofMemoryError?
Mam skargę, że moja aplikacja serwerowa zawiesza się przy dużym obciążeniu.
Jest to aplikacja internetowa działająca wTomcat 5
.
Widzę zrzuty wątku i widzę błąd OutOfMemory
1TISIGINFO Dump Event „systhrow” (00040000) Szczegóły
„java / lang / OutOfMemoryError” „Nie udało się utworzyć wątku: retVal -1073741830, errno 12”> otrzymano 1 TIDATETIME Data: 2012/07/17 o 20:03:17 1TIFILENAME> Nazwa pliku Javacore: C: ApplicationAcat5 bin javacore.34545719.4646464.4172.0003.txt
Informacje o stercie są następujące:
Maximum Java heap size : 1500m
Initial Java heap size : 256m
Jest to konfiguracja początkowej i maksymalnej wielkości sterty (32-bitowa Java)
Widzę również, że dostępna jest wolna przestrzeń sterty
1STHEAPFREE Bytes of Heap Space Free: 2D19F3C0
1STHEAPALLOC Bytes of Heap Space Allocated: 5DC00000
To jest około 750 MB wolnego miejsca, prawda?
Z analizy metody wątku wynika, że liczba wątków wynosi695
z którego49%
jestjava/lang/Object.wait(Native Method)
i39%
jest wsun/misc/Unsafe.park(Native Method)
Też to widzęNO JAVA STACK 1%
Nie jestem pewna co to oznacza.
Zakleszczono również 0 stopni2%
jest Runnable.
Nie jestem pewien, jak zinterpretować te informacje lub jak przejść stąd, aby wykryć przyczynę.
Jakaś pomoc w tej sprawie?