2016-07-19 3 views
0

폴더에서 파일을 읽는 Java 프로그램이 있으며 처리를 수행하고 출력 파일을 다른 폴더에 씁니다. 프로세스가 종료 된 경우에도 Java 열린 파일이 지워지지 않음

"too many files" 

그런 다음 내가 다 (BufferReader 및 BufferWriter)를 닫습니다 프로그램을 수정 과정을 다시 시작 : 그것은 다음과 같은 오류를 던지고 후 실패 후 4 시간 동안 실행하고 몇 개의 파일을 생성하지만. 그러나이 시간 과정은 다음과 같은 오류를 던져 시작한 후 실패
java.io.FileNotFoundException: <file> (Too many open files) 

그럼 내가 lsof를 실행 시도하고 열려있는 파일의 어떤을 대부분을 가지고하는 프로세스를 검색. NetworkManager라는 것을 깨달았습니다. 그러나 나는 그 과정을 죽일 지의 여부를 확신하지 못했습니다. 그래서 나는 기계를 다시 시작했다. 그 후에도 자바 프로그램을 실행할 때, 나는 여전히 같은 오류가 발생합니다.

최악의 경우 모든 코드를 닫지는 않지만 내 코드가 여전히 일부 누수가있을 수 있지만 프로세스를 시작한 직후에는 여전히 실패 할 수 있습니다. 그래서 나는 이전에 실행 한 것에서 어떤 것이 시스템에 거짓말을하고 있다는 느낌을 가지고 있습니다. 또한 다른 컴퓨터에서 같은 프로세스를 시작하면 실패하기 몇 시간 동안 실행됩니다.

+0

명확한 답변을 얻으려면 코드를 표시하십시오 !! – Azodious

답변

1

원하는 경우에도 프로그램 실행간에 리소스를 유지할 수 없습니다. 이론상 충분한 자원이 없어도 시스템을 벗어날 수는 있지만, 시스템을 다시 시작하면이를 해결해야합니다.

당신이 가지고있는 파일이 프로그램에서 파일 핸들이 부족한만큼 실행될 가능성이 더 높습니다. 파일을 저장 한 디렉토리의 이름을 바꾸고 빈 파일부터 시작하여 확인하십시오.

관련 문제