2012-04-27 9 views
2

環境: サーバー:JBossの4.2.3.GAメモリリーク - java.lang.NoClassDefFoundErrorが:COM/mchange/V2/RESOURCEPOOL/BasicResourcePool

我々は、接続プーリングのためC3P0 0.9.1.2を使用しています。

ホットデプロイ Jboss ASのwarファイルにc3p0からのメモリリークが発生するたびに発生します。 最終的には"java.lang.OutOfMemoryError:PermGen space"になります。エラーが発生すると、アプリケーションサーバーを強制的に再起動します。

誰もこの問題に遭遇しましたか?この問題の回避策はありますか?

次のようにスタックトレースは次のとおりです。

14:50:16,097 INFO [WebappClassLoader] Illegal access: this web application instance has been stopped already. Could not load com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. 
java.lang.IllegalStateException 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
    at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
    at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
    at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
    at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
    at java.util.TimerThread.mainLoop(Timer.java:512) 
    at java.util.TimerThread.run(Timer.java:462) 
14:50:22,328 ERROR [STDERR] Exception in thread "Timer-5" 
14:50:22,329 ERROR [STDERR] java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask 
14:50:22,329 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
14:50:22,329 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
14:50:22,329 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
14:50:22,329 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
14:50:22,329 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
14:50:22,329 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
14:50:22,329 ERROR [STDERR]  at java.util.TimerThread.mainLoop(Timer.java:512) 
14:50:22,329 ERROR [STDERR]  at java.util.TimerThread.run(Timer.java:462) 
14:50:22,329 ERROR [STDERR] Caused by: java.lang.ClassNotFoundException: com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask 
14:50:22,329 ERROR [STDERR]  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) 
14:50:22,329 ERROR [STDERR]  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
14:50:22,329 ERROR [STDERR]  ... 8 more 
14:50:23,081 ERROR [STDERR] Exception in thread "Timer-6" 
14:50:23,082 ERROR [STDERR] java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask 
14:50:23,082 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
14:50:23,082 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
14:50:23,082 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
14:50:23,082 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
14:50:23,082 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
14:50:23,082 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
14:50:23,082 ERROR [STDERR]  at java.util.TimerThread.mainLoop(Timer.java:512) 
14:50:23,083 ERROR [STDERR]  at java.util.TimerThread.run(Timer.java:462) 
14:51:59,105 INFO [WebappClassLoader] Illegal access: this web application instance has been stopped already. Could not load com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask. The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact. 
java.lang.IllegalStateException 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1244) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
    at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
    at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
    at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
    at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
    at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
    at java.util.TimerThread.mainLoop(Timer.java:512) 
    at java.util.TimerThread.run(Timer.java:462) 
^[[1;2C14:56:03,597 ERROR [STDERR] Exception in thread "Timer-11" 
14:56:03,598 ERROR [STDERR] java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask 
14:56:03,598 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
14:56:03,598 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
14:56:03,598 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
14:56:03,598 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
14:56:03,598 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
14:56:03,598 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
Listening for transport dt_socket at address: 8787 
14:56:03,598 ERROR [STDERR]  at java.util.TimerThread.mainLoop(Timer.java:512) 
14:56:03,598 ERROR [STDERR]  at java.util.TimerThread.run(Timer.java:462) 
14:56:03,598 ERROR [STDERR] Exception in thread "Timer-10" 
14:56:03,607 ERROR [STDERR] java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
14:56:03,607 ERROR [STDERR]  at java.util.TimerThread.mainLoop(Timer.java:512) 
14:56:03,607 ERROR [STDERR]  at java.util.TimerThread.run(Timer.java:462) 
14:56:03,607 ERROR [STDERR] Exception in thread "Timer-9" 
14:56:03,607 ERROR [STDERR] java.lang.NoClassDefFoundError: com/mchange/v2/resourcepool/BasicResourcePool$1DestroyResourceTask 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.destroyResource(BasicResourcePool.java:980) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1406) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.removeResource(BasicResourcePool.java:1378) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.cullExpired(BasicResourcePool.java:1462) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool.access$1900(BasicResourcePool.java:32) 
14:56:03,607 ERROR [STDERR]  at com.mchange.v2.resourcepool.BasicResourcePool$CullTask.run(BasicResourcePool.java:1937) 
14:56:03,607 ERROR [STDERR]  at java.util.TimerThread.mainLoop(Timer.java:512) 
14:56:03,607 ERROR [STDERR]  at java.util.TimerThread.run(Timer.java:462) 
14:56:03,607 ERROR [STDERR] Caused by: java.lang.ClassNotFoundException: com.mchange.v2.resourcepool.BasicResourcePool$1DestroyResourceTask 
14:56:03,607 ERROR [STDERR]  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1358) 
14:56:03,607 ERROR [STDERR]  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204) 
14:56:03,607 ERROR [STDERR]  ... 8 more 

答えて

5

Whenever we hot-deploy war files in Jboss AS are encountering the memory leak from c3p0.

あなたのJBoss 4.2でホットデプロイ(またはJBossの他のバージョン)の場合は、最終的にPermGenプールでメモリリークが発生し、サーバが必要になります再起動。私が知っている回避策はなく、c3p0とは関係ありません。

開発中、これはほんのちょっとした迷惑です。プロダクションでは、まったくやってはいけません。

+2

誰かがそれについて何かする必要があります。しかし、それは長い議論です。 – Mindwin

+0

私は誰もそれについて何もしないと信じています。私は今mongodbを使用していることをうれしく思っています。 – aspdeepak

関連する問題