java - Java의 arraylist에 대용량 파일을로드하는 가장 좋은 방법

출처 java

크기가 약 300MB 인 파일이 있습니다. 내용을 한 줄씩 읽고 ArrayList에 추가하고 싶습니다. 그래서 배열 목록 a1의 객체를 만든 다음 BufferedReader를 사용하여 파일을 읽은 후 파일의 행을 ArrayList에 추가하면 스레드 "main"java.lang.OutOfMemoryError : Java 힙 공간에 오류 예외가 발생합니다.

이에 대한 해결책이 무엇인지 알려주십시오.

  public static void main(String[] args) {
    // TODO Auto-generated method stub
    try {
      FileReader file = new FileReader(
          "/home/dmdd/Desktop/AsiaData/RawData/AllupperairVcomponent.txt");
      ArrayList a1 = new ArrayList();
      BufferedReader br = new BufferedReader(file);
      String line = "";
      while ((line = br.readLine()) != null) {
        a1.add(line);
      }
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }
  }
순진하게 Xmx 명령 줄 인수를 통해 힙의 크기를 늘립니다 (일부 지침은이 excellent answer 참조).

이것은 어느 정도 작동하지만, 대신 메모리 요구 사항이 최소화되도록 데이터를 구조화하는 것이 좋습니다. 한 번에 모든 것을 기억해야합니까? 항목이 해당 세트에 있는지 여부 만 테스트하면 될 수 있으며 해시 또는 블룸 필터 등을 사용하는 것이 좋습니다.
관련 기사

java - 배포 (게시) 후 Weblogic 오류 : 오류 503-- 서비스를 사용할 수 없음

java - "리소스로 시도"에 문제가 있음

java - Java 인터페이스에 대한 Java 특성 파일 바인딩

java - 날짜 시간 형식 Java로 시간 추가

java - Java의 내부 클래스에서 변수에 액세스

java - ArrayIndexOutOfBoundsException 데이터 액세스 시도

java - charAt ()은 문자열을 반환하지 않습니까?

enums - Java API에서 열거 형 사용

java - 자바에서 정수 비교

java - RandomAccess 인터페이스, 왜 메소드가 없습니까?