2012-06-07 4 views
0

많은 항목이있는 데이터베이스를 채우지 만 7000 행 (약 600 항목)이 지나면 Java 힙 크기 제한을 초과합니다. avd의 설정 파일에서 힙 크기를 32에서 64로 변경하려고했습니다. -Xmx1024를 넣어 (제어판에서) 모든 Java 응용 프로그램의 힙 크기를 변경하려고했습니다. 지금까지 어떤 일도하지 않았습니까? 생성하고 자바 객체에 추가 할 때마다, 그것은 가능한 힙 공간의 일부를 소모합니다android java heap size가 초과되었습니다.

cv.put(KEY_NAME, "name"); 
cv.put(KEY_HOTNESS, "hotness"); 
cv.put(KEY_CALORIE, "50"); 
cv.put(KEY_FAT, "5"); 
cv.put(KEY_CARBS, "5"); 
cv.put(KEY_PROT, "5"); 
cv.put(KEY_MULTI, "1"); 
ourDatabase.insert(DATABASE_TABLE, null, cv); 
+3

데이터베이스를 어떻게 채우고 있습니까? 코드를 게시 할 수 있습니까? –

+0

는 populating에서 짧은 부분을 업데이트했습니다, 나는 지금까지이 유형의 600 insert를 추가했습니다. 그 중 일부를 삭제하면 작동하지만, 적어도 600 이상은 필요합니다. –

+0

죄송합니다. 정말로 600 줄을 그렸습니까? 변경하려면 600 라인을 다시 통과해야합니까? 왜 그걸 파일에서 읽지 않는거야? – m0skit0

답변

0

:

까지 사전에 감사합니다. 코드에서 방대한 양의 쿼리를 작성하고 처리하는 대신 작은 청크로 쿼리를 처리하고 변경 사항을 커밋 한 다음 더 많은 데이터로 이동해야합니다. 이렇게하면 한 번에 소량의 힙 공간 만 사용하게됩니다. 이러한 쿼리를 모두 한꺼번에 처리해야하는 이유가 없습니다.

위의 설명에 따라. 이러한 대량 삽입물이 응용 프로그램에서 생성되는 이유가없는 한 응용 프로그램 코드 내에서 그렇게해서는 안됩니다. 데이터베이스는 응용 프로그램 외부에서 채워 져야합니다.

관련 문제