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?

questionAnswers(5)

yourAnswerToTheQuestion