안녕하십니까.(outofmemoryerror : java heap space) 오라클 레코드를 반복 할 때
여기에 약간의 문제가 있습니다. 오라클 데이터베이스에서 결과 집합을 가져 와서 파일에 각 행을 인쇄 한 다음 다음 행을 가져 오는 코드가 있습니다. 결과 집합이 끝날 때까지 계속됩니다.
오직 어떤 일이 발생하지 않습니다. 결과는 메모리를 다 써 버릴 때까지 결과 집합을 가져 와서 행 반복을 시작하고 파일로 인쇄하여 Java 힙에 더 많은 공간이 필요하다고 주장합니다.
응용 프로그램은 현재 힙에서 2g의 메모리로 실행 중이며 코드는 약 150000 번째 행에서 중단됩니다. 아래 시도
Connection conn = DriverManager.getConnection(url,"name","pwd");
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
ResultSet rset = stmt.executeQuery(strSql);
String strVar_1 = null;
long lCount = 0;
while(rset.next()){
lCount++;
if (lCount % 100000 == 0){
System.out.println(lCount + " rows completed");
}
strVar_1 = rset.getString("StringID"); /// breaks here!!!!!!!!!
if (strVar_1 == null){
strVar_1 = "";
}
if (!strQuery_1.equals("")){
out.write(strVar_1 + "\n");
}
}
out.close();
Ok, 다시 시도하고 네트워크를 통해 레코드를 반환하는 데 시간이 오래 걸립니다.) 감사합니다 – rockit
귀하의 쿼리 꽤 많은 행을 반환했다 생각. 보조 노트와 마찬가지로 ResultSet, Statement 및 Connection에서도 close를 호출해야합니다. –
나는 위의 코드에서 벗어났다. 덕분에 – rockit