2

threadPoolに LinkedBlockingQueue を使用しています

new ThreadPoolExecutor(20, 
                       21, 
                       10,
                       TimeUnit.SECONDS, 
                       new LinkedBlockingQueue<Runnable>())

そして、JDK 7で修正されたメモリリークバグ(メモリが LinkedBlockingQueue Nodes でいっぱいになり、徐々に遅くなる)に苦しんでいます。

今のところ、ランタイム環境や JDK を変更したくありません。

BlockingQueue インターフェイスの他の実装とは異なり、LinkedBlockingQueue にはサイズ制限がありません。代替キューを提案できますか?

4

2 に答える 2

4

リンク先の修正バグ ID も Java 6 にバックポートされています。Java 6 Update 19 以降、Java 6 で修正されています。http ://bugs.sun.com/view_bug.do?bug_id= 2186685を参照してください(これところで、あなたが参照しているバグにリンクされています)。

于 2013-01-09T12:39:13.507 に答える
2

ArrayBlockingQueueこれは、固定サイズの配列によって支えられています。

PriorityBlockingQueue- 無制限のブロッキングです。ここでは、優先キューの要素は、自然な順序付けに従って、またはキューの構築時に提供される Comparator によって順序付けられます。

于 2013-01-09T12:38:33.840 に答える