200 スレッド (Jruby 1.7.0.preview1) を開始する jruby アプリケーションがあります。各スレッドは xml ドキュメントを解析し、複雑なデータをいくつかの mongodb コレクションに保存しました。Java Mongo Driver (バージョン 2.7.3) を使用してデータを mongodb に保存しています。アプリケーションの JVM オプションは次のとおりです。
-J-Djruby.thread.pooling=true -J-Xmn512m -J-Xms4096m -J-Xmx4096m -J-XX:+UseConcMarkSweepGC -J-XX:CMSInitiatingOccupancyFraction=45 -J-XX:ParallelGCThreads=1 -J-XX:+DisableExplicitGC -J-XX:+PrintGCDetails -J-XX:+PrintGCTimeStamps -J-Xloggc:/LOGPATH/gc.log -J-Dsun.rmi.dgc.client.gcInterval=60000 -J-Dsun.rmi.dgc.server.gcInterval=60000
したがって、スレッドが機能し、特定のコレクションにデータを保存するたびに、ヒープサイズは非常に高速に 4GB の制限に達します。jmap コマンドでテストを行ったところ、java.util.LinkedHashMap のオブジェクトが多数作成されていることがわかりました (約 1.300.000)。この種のオブジェクトタイプの量を減らすことができるかどうかはわかりません。
Jruby の LinkedHashMaps とメモリ リークに関する既知の問題はありますか?
誰でもこの問題を解決できますか?
Thxクリス