2012-02-17 2 views
1

내 장치 (HTC Wildfire S, Android 2.3.5)에 "너무 많은 파일 열기 오류"오류가 자주 나타납니다. 이미 메모리 누수가있는 항목을 이미 발견했습니다. 문제는 문제를 디버깅하는 방법입니다. 어떤 프로세스가 파일 디스크립터를 사용하고 있지 않은지 발견하는 방법은 무엇입니까?열려있는 파일이 너무 많습니다. 오류 - 디버깅

내 장치가 루트 편집기가 아니므로 루트화 장치가 아닌 열린 장치에 대한 정보를 얻는 방법을 알고 싶습니다. 이것이 가능하지 않다면, 안드로이드 에뮬레이터에서 그러한 데이터를 얻는 방법을 알려주십시오.

+0

Eclipse에서 Android DDMS 투시도를 사용해보세요. – Thommy

+1

나는 시도했다. 그러나 나는 무엇을 찾을 지 모른다. 더 자세하게 얘기해 주 시겠어요? – Remi

답변

3

저는이 문제를 다루었습니다. "SFAIK"OS가 "너무 많은 파일 열기"라고합니다. 유닉스에서는 터미널에 lsof을 실행하십시오. 얼마나 많은 열린 파일이 있는지 믿을 수 없기 때문에 lsof | less으로 만드십시오. 요즘 앱은 파일 미친 짓이야.

어쨌든 편리하게 응용 프로그램을 종료하고 다시 시도하십시오. 큰 범죄자 중 하나는 adb입니다. 나는 그것이 무엇이든 닫는 지 알 수 없다. 따라서 일부 애플리케이션을 닫지 않으면 Eclipse가 닫히지 않습니다. 그런 다음 Unix 터미널에서 skill -9 adb을 실행하십시오. 다른 OS에는 다른 kill 도구가 있습니다. 그러나 아마 이클립스를 닫은 후에 백그라운드에서 여전히 쫓겨나고있는 아마 유닉스 (아마 Unix에서는)를 죽여라.

그래도 효과가 없다면 실제로 작아 질 것입니다. 들어가. 손으로 파일을 닫으십시오. 파일의 수를 얻기 위하여

+0

Mac에서도 도움이되었습니다. 감사! – User

0

명령 다음 스스로 당신은 또한 사용할 수있는 파일과 함께 열 : 사용자에 의해 열린 파일의

lsof | grep USER | tee /dev/tty | wc -l 

총 수는 출력의 맨 끝에 인쇄됩니다.

0

당신은 또한 당신의 응용 프로그램에서 사용하는 모든 파일을 볼 수

lsof | grep <pid>

뭔가를 실행할 수 있습니다. 총계를 얻으려면 끝에 | wc -l을 추가하십시오.

관련 문제