私はあなたが文書や画像をアップロードし、これらをバイト[]としてデータベースに保存するアプリケーションを持っています。grailsのbyte []のメモリリーク2.0.3
(私はあなたがここにジップとしてダウンロードして、STS http://dl.dropbox.com/u/2342474/byteMemoryLeak.zipにインポートすることができ、最小限のサンプルプロジェクトを作成...あなたはTODOを持っているすべてはdatasource.groovyに行き、あなたのデシベルの設定を変更している)
ので、ドメインオブジェクトは、次のようなものになります。
class Test {
byte[] data
static constraints = {
data nullable: false, maxSize: 1024*1024*40
}
}
とコントローラを、我々は我々が行くプロジェクトを開始するときのビューは、すべてのだから今...ここで変更生成-allコマンドを...何と直接
を生成していますテストコントロールにler ...ヒットを新規作成する...ドキュメントをアップロードする... 5 - 10 MBのようなものを使用して作成する...
save()メソッドが実行されてからshowメソッドが呼び出されたときにも、それらが終了すると、GCはそれらのオブジェクトをピックアップして、それらが現在必要でないので、それらを捨てるはずです...今、私はあなたのKit Java Profilerを使って、メモリの使用量と私は弱い参照を持っているか、到達不可能な私のバイト[]の3つの参照があることがわかります...それはなぜですか?彼らはshow()メソッドまたはsave()メソッドが完了した時点で削除されていませんか?ここで
スクリーンショット:[メモリリーク]:http://i.imgur.com/XGj6A.png
は、私はより頻繁にGCを実行するために、Tomcatのための特別な設定を行う必要がありますか?
私はこれについて非常に混乱しています。実際にテストしているアプリケーションでは、多くのドキュメントをアップロードしているため、ヒープメモリが完全に完全になり、ほとんど決してクリーニングされませんだから私はいくつかの点ではメモリの例外が発生する...実際には、それはすべてのオブジェクトをロードし、現在は実際に各オブジェクトのバイト[]がロードされ、現在のメモリとdoesntのリスト()メソッドでも発生しますクリーンアップ...
たぶん私はちょうど何かが足りないか、何か間違ったことをやっている...すべてのヘルプは大...
おかげ クリスをいただければ幸います
+1の間の短い期間のために一時停止されています。私からの答えは申し訳ありませんが、私はこれを見ています。 – David