1

자바 애플 리케이션의 힙에서 약 15GB를 차지하는 객체가 있는데, JVM을 다시 시작한 후에도이를 유지해야합니다. ObjectOutputStream의 writeObject 메서드를 사용하여 디스크의 파일에 매 간격으로 파일을 씁니다. 쓰기 프로세스가 매우 길고 (몇 분) GC 문제가 발생하기 때문에 개체를 어떻게 분할하여 각 부분을 개별 파일에 저장하고 단일 파일에 대한 단일 작업으로 저장하지 않을까요? 이 작업을 수행 할 수있는 방법이 있습니까? (물론 필자가 필요할 때 파일에서 다시 불러올 수 있습니까?)큰 파일을 파일로 저장하기 전에 큰 개체를 분할하십시오.

 FileOutputStream fos = null; 
     GZIPOutputStream gos = null; 
     ObjectOutputStream oos = null; 
     try { 
      fos = new FileOutputStream("some_path"); 
      gos = new GZIPOutputStream(fos); 
      oos = new ObjectOutputStream(gos); 
      oos.writeObject(myLargeObject); 
      oos.flush(); 
      gos.close(); 
      fos.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

답변

0

답변은 this입니다. 분할 된 파일을 재구성하는 과정은 각 개별 파일을 읽고 "마스터"파일에 추가하는 것입니다.

관련 문제