2011-03-14 2 views
5

수시로 "org.eclipse.swt.SWTError : No more handles"이 붙어 있습니다. 할당 된 핸들 수를보기 위해 GDIView와 같은 도구를 이미 알고 있지만 지금은 더 나은 방법이 있는지 궁금합니다.SWT - "더 이상 처리 할 수 ​​없음"을 디버깅하는 방법

도구가 있습니까? 핸들을 만들 때 모든 스택 추적을 기록하는 스크립트일까요? 그리고 두 개의 호출 점 사이에 새로운 핸들을 보여줍니다? 다니엘

PS

안부 : DEV 창문에 주로 occures과 창 유일한 도구가 충분하기 때문 창문 태그를 추가했습니다.

+0

이 질문은 대답과 관련이있을 수 있습니다 : http://stackoverflow.com/questions/164776/overcoming-windows-user-object-handle-limit – Zoot

+0

@Zoot : 그는 증상이 아니라 작동하도록 원인. 나는 단지 실제 누출을 찾고 있는데, 나는 많은 핸들을 필요로하지 않는다. 시간이 지남에 따라 너무 많은 리소스가 사용됩니다. 슬 루크를 사용하여 나는 심지어 재창조 된 자원을 찾을 수있었습니다. 이걸 디버깅하면 내 앱이 RDP보다 빠르게 눈에 띄게됩니다. – Daniel

답변

3

SWT 리소스를 디버그하는 훌륭한 도구 인 Sleak을 발견했습니다! 동일한 문제를 가진 모든 사람에게 적극 추천합니다. 심지어 이미지 자원을위한 이미지를 보여줍니다!

0

나를 위해 문제는 단순히 새로운 Shell()이 너무 자주 호출되었다는 것입니다. 쉘을 정적 멤버로 저장하고 재사용하면 도움이됩니다. 따라서 Sleak과 같은 도구를 적용하기 전에 다른 사용자는 "새 셸"에 대한 전체 텍스트 검색을 수행하고 동일한 간단한 원인이 없는지 확인하려고 할 수 있습니다.