java.util.List#subListメソッドの使い方がまちがっていたためにメモリリークを犯してしまっていた、という話です。 画像の各ピクセルの色を抽出してある法則に並べ替えた後に、先頭の10個の要素を返す、というメソッドを作るとしましょう。 このとき List<Color> cs = ... Collections.sort(cs, COMPARATOR); return cs.subList(0, 10); と書いてしまうと問題が生じます。csがメモリリークを起こすのです。 java.util.List#subListのJavadocによると、このメソッドはあるリストの特定の範囲を操作したいときの面倒なインデックス計算を省略するためにあるようです。 例えばJavadocの例ですが list.subList(from, to).clear(); と書くとのfromからtoの範囲の要