파일에서 많은 양의 데이터를 읽고이를 Excel 파일에 쓰는 코드가 있습니다. 문제는 데이터가 힙 크기 한계를 넘어 서면 메모리 부족 예외가 발생한다는 것입니다. 힙 크기를 늘리려고 시도하고 프로그램이 정상적으로 실행되었습니다. 그러나 문제는 내 컴퓨터에 제한된 RAM이 있고 힙에 엄청난 공간을 할당하면 컴퓨터가 매우 느려지 게된다는 것입니다. 그럼, 내 코드를 실행하기 위해 힙 크기를 늘리지 않아도되도록 데이터의 일부 한계를 처리 한 후 메모리를 비울 수있는 방법이 있습니까? 이런 것들에 비교적 새로운 점이 있으니 약간의 아이디어를 제안 해주세요.피할 수있는 방법 이클립스에서 힙 크기를 늘리지 않고 메모리 부족 예외가 발생했습니다.
답변
이런 경우에는 코드를 재구성하여 작은 덩어리의 데이터로 작업해야합니다. 작은 버퍼를 만들고, 데이터를 읽어 들여 처리하고, Excel 파일에 씁니다. 그런 다음 동일한 반복을 읽고 다음 반복을 계속하십시오.
물론 사용중인 Excel 라이브러리는 이와 같이 작동 할 수 있어야하며 전체 파일을 한 번에 작성하지 않아도됩니다.
JXL API는 이러한 종류의 제한된 버퍼 기능을 제공합니다. 오픈 소스 API입니다. http://jexcelapi.sourceforge.net/
DirectByteBuffer를 Buffer.allocateDirect (byteSize)와 함께 사용할 수 있습니다. 또는 MemoryMappedFile을 사용하면 힙 메모리의 메모리 공간을 사용합니다.
그러나 직접 버퍼를 할당하면 OS/아키텍처/하드웨어에 의해 부과 된 메모리 제한을 초과하면 OutOfMemoryError가 발생할 수도 있습니다. 그리고 이것은 OP에서 그의 기계가 RAM이 부족하다고 말하기 때문에 이런 경우에 일어날 수 있습니다. –
그래서 데이터를 영구 저장 장치 (HDD)에 저장하거나 저장하거나, Gson을 사용하여 데이터를 디스크에 저장할 수 있습니다 – UsTa
- 1. memorystream으로 메모리 부족 예외가 발생했습니다.
- 2. 감속기의 힙 메모리 부족
- 3. XML 파일을 암호 해독 할 때 "메모리 부족"예외가 발생했습니다.
- 4. 파일 크기를 늘리지 않고 PHP에서 이미지를 반복적으로 회전하는 방법
- 5. Xalan XSLT - 메모리 부족 힙 공간
- 6. WMI 이벤트 쿼리에 등록하는 동안 메모리 부족 예외가 발생했습니다.
- 7. solr - 메모리 부족 Java 힙 공간
- 8. "메모리 부족"후 힙 덤프를 찾을 위치
- 9. 300dpi 이미지를 wrting하는 동안 메모리 부족 예외가 발생했습니다.
- 10. 캐시에서 MemoryStream을 사용할 때 메모리 부족 예외가 발생했습니다.
- 11. xml @ wp7을 구문 분석하는 동안 메모리 부족 예외가 발생했습니다.
- 12. DB에서 거대한 데이터를 가져올 때 메모리 부족 예외가 발생했습니다.
- 13. 회전 이미지에 "메모리 부족"예외가 표시됨
- 14. netbeans와 eclipse에서 메모리 부족 오류가 발생했습니다.
- 15. 이미지를 늘리지 않고 크기를 조정하는 방법은 무엇입니까?
- 16. 메모리 부족 예외를 피하고 예측하는 방법
- 17. Eclipse에서 메모리 부족 오류가 발생했습니다.
- 18. 메모리 부족 Java 이서
- 19. 메모리 부족 예외가 발생한 후주기 CLR?
- 20. 탐색으로 인해 메모리 부족 예외가 발생합니다.
- 21. ObjectEncoderOutputStream 메모리 부족 예외가 발생 했습니까?
- 22. Clojure STM 메모리 부족
- 23. 메모리 부족 예외
- 24. Java "메모리 부족 오류"- 힙/시스템 - 어디에서 볼 수 있습니까?
- 25. Solr 메모리 부족 예외
- 26. 메모리 부족
- 27. 안드로이드 메모리 부족
- 28. WinForms 메모리 부족 예외
- 29. createScaledBitmap을 호출 할 때 메모리 부족 예외가 발생합니다.
- 30. XDocument.Save()에서 메모리 예외가 발생했습니다.
데이터를 읽고 쓰는 코드의 작은 버전을 보여줍니다 (단, 필요한 다른 모든 것들은 아니지만 가능한 한 작게 만드십시오). 행동) 우리는 그것에 대해 논평 할 수 있습니다. – Nanne
http://stackoverflow.com/questions/2356137/read-large-files-in-java이 문제를 살펴보십시오. –
여러 파일에서 데이터를 읽고이를 한 번에 Excel 파일에 써야합니다. –