>> JENA-1215 : ResultSetCloseable -- this will be in Jena 3.2.0. >> This may help if you want to pass the ResultSet around - it keeps the >> QueryExecution around to close it. >> >> Andy > > That’s great. This is actually my class 😊 I’m just waiting for the voting to > finish jejeje
Feel free to test the release candidate and cast a non-binding vote. We have until the end of tomorrow to receive the third binding vote to do a release and you might remind someone else to cast their vote! :grin: --- A. Soroka The University of Virginia Library > On Feb 5, 2017, at 4:09 AM, <[email protected]> <[email protected]> wrote: > > > > Sent from jlanza_teclast > > From: Andy Seaborne > Sent: sábado, 4 de febrero de 2017 16:56 > To: [email protected] > Subject: Re: ResultSetFactory.copyResults performance doubt > > > > On 03/02/17 21:41, George News wrote: >> Hi all, >> >> On my environment I have created a class in order to encapsulate access >> to `Dataset` and `Model`s stored. I didn't realize that the >> `QueryExecution` instance was not collected by the GC > > Just because > > It should GC'ed. This depends on the storage but all the memory ones > and TDB that come with Jena itself don't rely on ".close()". It is as > much a case of recognizing that QueryExecution is use-once. > >> and it seems that >> could lead to memory leak. In this sense I found that >> `ResultSetFactory.copyResults()` detach the `ResultSet` from the >> QueryExecution. > > ResultSetFactory.copyResults() is materializing the results and creating > a List<> to keep them in so it isn't a huge copy. > > If the app is going to iterate over all the results, this is more a case > of moving where work is done, not increasing or decreasing the work. > >> My concern now now is about performance: ¿Is it really consuming to >> perform a copy of thousands of data? Would it be better to create >> another class acting as a wrapper for the Jena `QueryExecution` and just >> only read the `ResultSet` once. >> >> This is the kind of thing I'm referring to. >> >> ```java >> // query is a Query >> // ts is the class encapsulating the management of the triple store >> SparqlExecutor exec = new SparqlExecutor(query, ts); >> ResultSet res = exec.execute(); >> // Do what ever with the resultset >> exec.close() >> >> ``` >> >> Within the `execute` function I manage the transaction, get the >> corresponding named graphs, etc. > > JENA-1215 : ResultSetCloseable -- this will be in Jena 3.2.0. > > This may help if you want to pass the ResultSet around - it keeps the > QueryExecution around to close it. > > Andy > > > That’s great. This is actually my class 😊 I’m just waiting for the voting to > finish jejeje >> >> Thanks a lot. >> >> Jorge >> >> P.S.: It is difficult to explain things without disclosing the code :( >> sorry. >> >
