与えられたデータをツリー表現に変換する私のアプリケーションは、メモリを使いすぎています。クラッシュする前に、約 200 ~ 300 MB のメモリを約 3 GB に変換することができます。
私は今、リークがどこにあるのか、プログラムのどの部分が原因なのかを突き止めたいと思っています。
したがって、sbcl を使用して common-lisp でメモリをプロファイリングするための最も一般的で効率的な手法は何でしょうか?
私はすでに見ましたが(room)
、(time)
その出力は冗長です。必要なのは、「実行後の全体的なメモリ使用量は+1000バイトでした」と言うラッパーだけです。メモリがどこにあるかを知りたいだけなので、これで対処できます。使用済み。もう 1 つの基準は、RAM が残っていないためにアプリケーションがクラッシュする可能性が高いため、「オンザフライ」で動作する必要があることです。
このようなもの:
(dotimes (i 4)
(profiler-wrapper :messg "After execution memory ~a~%" (execute-me i) ))
After execution memory +100Mb
After execution memory +100Mb
After execution memory +100Mb
After execution memory +100Mb
NIL