2013-12-09 13 views
19

私のアプリケーションをプロファイルしようとしています。 -hc RTSオプションを使用してメモリ使用量を分析すると、PINNEDとマークされたメモリが大量に検出されました。 -hyを実行すると、メモリはARR_WORDSとマークされます。Haskellプログラムの-hcプロファイルでPINNEDとは何を意味していますか?

hmatrixパッケージのData.Packed.Matrixモジュールを使用して2倍の2400×2400の行列を作成し、その要素を連続したメモリに格納する必要があるため、行列があまりにも多くの領域を占有することはありません。

enter image description here

私の質問は:PINNED単語が実際に何を意味するのでしょうか?なぜ、どこのメモリが使われているのかについてさらに詳しい情報を得る方法はありますか?

問題のソースコード全体がon GitHubです。それに興味がある人は誰でも構いません。しかし、それは最小限の例から非常に遠いです。

+3

https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/GC/Pinned – Josh

+2

これはおそらく、固定 'のByteArray#'で実装されている 'ByteString'を意味し、 – jberryman

答えて

8

"固定"データは、ガベージコレクタが移動できないことを意味します。これは、例えば、FFIを介してC関数にデータを渡すときに役立ちます。 Cコールが実行されている間、GCがデータを移動することは望ましくありません。

Soylet Greenは、上記の関連リンクを示しました(https://ghc.haskell.org/trac/ghc/wiki/Commentary/Rts/Storage/GC/Pinned)。実際に

関連する問題