2012-03-02 58 views
3

我開發了一個應用程序,它將大量的SPARQL查詢連續發送到D2R端點。我正在使用jena 2.6.4和arq 2.8.7進行查詢。但在執行期間,應用程序會停止查詢D2R並等待一段時間,無任何理由。我使用VisualVM工具搜索並分析了它,並且我意識到,如果我手動觸發「執行GC」,應用程序將開始查詢,並在一段時間後再次停止。使用Jena/ARQ等待sparql查詢到D2R - 堆空間

我想它與我的應用程序的垃圾收集時間有關。看起來應用程序有足夠的內存,所以不需要垃圾回收,但實際上查詢它必須觸發垃圾回收。

我想問問,如果jena對查詢和分配資源有任何約束?有沒有人有任何想法?

注意:我已經分配堆空間作爲min:256m max:512m到eclipse中的應用程序。我也給了D2R 512m堆。 (我的電腦有4GB內存。)

在此先感謝。

回答

1

我發現問題的根源。當我在Jena使用ARQ查詢時,它通過Jetty發送HTTP請求。換句話說,當您使用ARQ進行查詢時,這意味着您通過網絡向D2R發送查詢。因此,如果您發送一系列查詢,並且您有責任從堆中清除某些內容,我想D2R會阻止您。

D2R提供API以便能夠使用「ModelD2RQ」類(請參閱:http://www4.wiwiss.fu-berlin.de/bizer/d2rq/spec/#usingmodel)連續查詢,您可以一次連續執行大量查詢。