2011-11-11 2 views
0

내가 ... 자바 그래서 여기 나와 함께 곰에 아주 새로운 해요 InputStream (이 = Class.class.getResourceAsStream("fileName.csv")입니다). 파일을 읽을 때 메모리는 약 44,000에서 시작하며 읽기가 완료되면 최대 298,000 개까지 올라갑니다. 클래스는 기본적으로 inputStream을 읽고 데이터를 일부 ArrayLists에 저장하여 신속하게 검색 할 수 있습니다. 문제는 .. 파일을 읽은 후에 메모리 사용량을 줄이는 방법을 알아낼 수 없습니다. object = null을 설정하거나 System.gc() {분명히 제안 일 뿐이며} 전화하지는 않았지만 작동하지 않았습니다. ScannerInputStream 모두에 대해 close() 방법을 사용 중이며 지금까지 아무 것도 작동하지 않았습니다. 누구든지 아이디어가 있습니까? 나는 그것이 가능하다고 생각한다. 내가 무엇에 대해 말하고 있는지를 알지 못한다. 그리고 이것은 그것이 있어야하는 방법이지만 나는 틀린 일을하고 있다고 확신한다.입력 스트림에서 메모리 확보? 내가 읽어 스캐너를 사용하고</p> <p>

미리 감사드립니다.

+0

더 많은 코드를 표시 할 수 있습니까? arraylists에 그것을 읽고 저장하는 경우, 그것은 기억을 취할 것입니다. 이 경우 블록 단위로 읽습니다. – excray

+0

기본적으로 약 400,000 명의 고객을 대상으로 Customer 객체의 ArrayList를 만듭니다. 나는 아마도 메모리를 사용하는 파일이 아니라 실제로 알기에 충분히 똑똑하지 않다고 생각하기 시작했습니다. – TJones

+0

코드 스 니펫을 게시하십시오. – r0ast3d

답변

1

일단 입력 스트림을 사용하면 해당 참조를 null로 설정할 수 있습니다. 이것은 가비지 콜렉터에게 사용되지 않은 메모리를 확보하도록 요청하는 유일한 방법입니다. 따라서 GC를 강제 실행할 수 없으므로 명시 적으로 메모리를 비울 수 없습니다 .

관련 문제