2012-03-02 9 views
3

多くのSPARQLクエリをD2Rエンドポイントに連続して送信するアプリケーションを開発しました。私はjena 2.6.4とarq 2.8.7を使用して照会しています。しかし、実行中、アプリケーションはD2Rのクエリを停止し、何もせずにしばらく待っています。私はVisualVMツールを使ってそれを検索し、分析しました。私が "Perform GC"を手動で起動すると、アプリケーションはクエリを開始し、しばらくしてから再び停止します。Jena/ARQを使用したD2Rへのsparqlクエリーの待ち - ヒープスペース

私のアプリケーションのガベージコレクション時間に関係すると思います。アプリケーションには十分なメモリがあるため、ガベージコレクションは必要ありませんが、実際にはそれをクエリするためにガベージコレクションを起動する必要があります。

jenaにクエリと割り当てられたリソースに関する制限があるかどうか尋ねたいと思いますか?誰か考えがありますか?

注:私は日食でアプリケーションに最小:256m最大512mとしてヒープスペースを割り当てました。また、私はD2Rに512mのヒープを与えました。 (私のコンピュータのRAMは4GBです。)

ありがとうございます。

答えて

1

私は問題の根本を見つけました。 JenaでARQを使用してクエリを実行すると、Jetty経由でHTTPリクエストが送信されます。つまり、ARQを使用してクエリを実行すると、ネットワーク経由でクエリをD2Rに送信することになります。したがって、一連のクエリを送信し、ヒープから何かをクリアする必要がある場合、D2Rはブロックします。

D2Rは、クラス "ModelD2RQ"(http://www4.wiwiss.fu-berlin.de/bizer/d2rq/spec/#usingmodel参照)を使用して、一連のクエリを連続して実行できるAPIを提供しています。

関連する問題