我有一個jruby應用程序,它啓動200線程(Jruby 1.7.0.preview1)。每個線程解析一個xml文檔並將複雜的數據保存在幾個mongodb集合中。我正在使用Java Mongo Driver(版本2.7.3)將數據存儲在mongodb中。 我的應用程序JVM選項如下:內存泄漏Jruby 1.7.0.preview1
-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和Memory Leaks的已知問題嗎?
任何人都可以幫我解決這個問題嗎?
THX 克里斯