使用Jena / ARQ - 堆空间等待sparql查询到D2R

时间:2012-03-02 13:09:22

标签: heap sparql jena

我开发了一个应用程序,它将大量SPARQL查询串行发送到D2R端点。我正在使用jena 2.6.4和arq 2.8.7进行查询。但是在执行期间,应用程序停止查询D2R并等待一段时间没有任何理由。我使用VisualVM工具搜索并分析它,我意识到如果我手动触发“执行GC”,应用程序开始查询,一段时间后它再次停止。

我认为它与我的应用程序的垃圾收集时间有关。看起来应用程序有足够的内存,所以不需要垃圾收集,但实际上对于查询它必须触发垃圾收集。

我想问一下,如果jena对查询和分配资源有任何限制吗?有没有人有任何想法?

注意:我已经将堆空间分配为min:256m max:512m到eclipse中的应用程序。我还给D2R提供了512米的堆。 (我的电脑有4GB的内存。)

提前致谢。

1 个答案:

答案 0 :(得分:1)

我找到了问题的根源。当我在Jena中使用ARQ查询时,它会通过Jetty发送HTTP请求。换句话说,当您使用ARQ进行查询时,这意味着您通过网络向D2R发送查询。因此,我认为如果您发送一系列查询并且您不得不从堆中清除某些内容,D2R会阻止您。

D2R提供了一个能够串行查询的API,使用“ModelD2RQ”类(参见:http://www4.wiwiss.fu-berlin.de/bizer/d2rq/spec/#usingmodel),您可以一次连续执行大量查询。