SPARQL을 통해 RDF를 쿼리 할 때 참깨를 사용하고 있습니다. 큰 파일 (2GB, 10GB)로 작업하고 이후에 여러 가지 쿼리를 수행합니다. 큰 파일을 작업하는 중에 오류 java.lang.OutOfMemoryError : Java 힙 공간이 발생합니다. 나는 내 응용 프로그램을 실행합니다. -Xmx3g 그러나이 파일은 충분하지 않은 것처럼 보입니다. 어쩌면 모든 쿼리를 수행 한 후에 저장소를 종료해야합니까? 또한참깨가있는 Java OutOfMemoryError
void runQuery() {
try {
con = repo.getConnection();
TupleQuery tupleQuery = con.prepareTupleQuery(QueryLanguage.SPARQL, queryString);
TupleQueryResult result = tupleQuery.evaluate();
while (result.hasNext()) {
result.next();
}
result.close();
con.close();
} catch (Exception e) {
...
}
}
}
runTests() {
File dataDir = new File("RepoDir/");
repo = new SailRepository(new NativeStore(dataDir));
repo.initialize();
...
for (int j = 0; j < NUMBER_OF_QUERIES; ++j) {
queryString = queries.get(j);
runQuery();
}
...
repo.shutDown();
}
, 그것은 가능하다 같은 큰 파일 대신 NativeStore의 MemoryStore을 사용하기 :
내 코드가있다? 오류 방출하는 쿼리의
예 : 그래서
SELECT DISTINCT ?name1 ?name2
WHERE {
?article1 rdf:type bench:Article .
?article2 rdf:type bench:Article .
?article1 dc:creator ?author1 .
?author1 foaf:name ?name1 .
?article2 dc:creator ?author2 .
?author2 foaf:name ?name2 .
?article1 swrc:journal ?journal .
?article2 swrc:journal ?journal
FILTER (?name1<?name2)
}
쿼리를 실행하는 동안 OutOfMemoryError가 발생합니까? 그것은 매우 드문 경우입니다. 당신의 쿼리는 어떻게 생겼습니까? 메모리 저장소 사용 : 힙 공간이 3G 밖에없는 경우 10G 데이터 파일을 메모리 저장소에 넣을 수 있을지는 의문입니다. –
@JeenBroekstra에 쿼리가 추가되었습니다. – YAPPO