2011-07-27 3 views
1

Tomcat에 배치 된 GWT 기반 애플리케이션이있다. OutOfMemoryException으로 응용 프로그램이 충돌합니다. 그래서 최대 할당 된 메모리를 사용하여 가까운 때 응용 프로그램의 힙 덤프 걸릴 시작했다. 메모리 누수 발견을위한 GWT 애플리케이션 프로파일 링

응용 프로그램의 동작

  • 클러스터 설정을 사용하여 서버에 ananlyzed되어야하는 응용 프로그램에 입력을 입력합니다 응용 프로그램에의

    1. 사용자 로그, 다음과 같다.
    2. 클라이언트는 15 초마다 서버를 폴링하여 작업 상태를 확인하고 UI 제어를 업데이트합니다. 폴링은 서버에서 일부 데이터를 가져 오는 requestfactory 호출을 사용하여 수행됩니다.
    3. 작업이 완료되면 flextable을 사용하여 사용자에게 결과를 표시합니다. 6 개의 열이있는 약 1000 개의 행이있을 수 있습니다.

    힙 덤프,

    우리는 메모리에 들고 무엇을 볼 수있는 jmap을 사용하여 톰캣 프로세스의 힙 덤프를했다. 다음 그림은 힙 덤프가있는 Eclipse Memory Analyzer를 사용하여 찍은 사진입니다.

    Overview of the heap dump

    Domiator Tree

    Dominator Tree

    Expanded dominator tree

    우리는 25K의 유지 크기의 힙에 보관되는 해시 맵의 항목을 많이가 약 600 만 있다는 것을 볼 수있다 그들의.

    질문 :

    1. com.google.gwt.core.client.impl.WeakMapping 16 바이트의 얕은 힙을 표시하지만 유지 힙 우리가 응용 프로그램에 대한 할당 거의 모든 메모리입니다.
    2. 우리는 15 초마다 서버를 폴링하고 어떻게 든 참조되며 GCed가 아닌 데이터를 검색하기 때문입니다.
    3. 어떻게 이러한 해시 맵을 참조 해제합니까?
    4. 여기에 언급 된 장면과 완전히 다른 내용입니까?

    지금까지 jconsole, jprofiler, MAT, jhat를 응용 프로그램 분석에 사용했습니다. 그리고 우리는 그 문제에 대한 단서가 없습니다.

    감사합니다.

  • 답변

    3

    memory leak in WeakMapping이 트렁크 및 2.4 분기에서 수정되었습니다.

    +0

    gwt2.4를 시도 할 예정입니다. 이것에 대한 데이터가 있으면 업데이트 될 것입니다. – Kathir

    +0

    rc1에 대한 수정 사항이 있습니까? 나는 rc1을 시도 중이고 변경이없는 것처럼 보입니다. – Kathir

    +0

    [RC1] (http://code.google.com/p/google-web-toolkit/source/detail?r=10464)에는 변경 사항이 있어야합니다. 그 이유는 [수정] (http : /code.google.com/p/google-web-toolkit/source/detail?r = 10344) –

    관련 문제