9

Haskell でさまざまなアルゴリズムをいじっていると、遅延評価でよくあるように、メモリ リークのあるプログラムを作成することがよくあります。すべてのメモリを消費するプログラムはあまり楽しくありません。気がつくのが遅すぎると、プログラムを殺すのが難しくなることがよくあります。

GHC6を使用しているときexport GHCRTS='-M384m'、私は単に.bashrc. しかし、GHC7 では、プログラムが でコンパイルされていない限り、コマンドライン引数または で RTS オプションが与えられたときに単に失敗するというセキュリティ対策が追加されました。残念ながら、このフラグを使ってコンパイルされた Haskell プログラムはほとんどないので、この変数を設定するとすべてが失敗します ( GHC7 にアップグレードした後、すべてのプログラムが突然失敗して、「ほとんどの RTS オプションが無効になっています。それらを有効にするには -rtsopts とリンクしてください。 " )。-rtsoptsGHCRTS

GHC7を使用する方法GHCRTS、またはプログラムがすべてのメモリを使用するのを防ぐ別の便利な方法はありますか?

4

1 に答える 1

5

で独自のプログラムをコンパイルして-with-rtsopts=-M384m、コンパイル時に RTS オプションを設定することができます (一度だけ)。で実行してはならないプログラムの「ブラックリスト」を設定することもできGHCRTSます.bashrc。おそらく何かのような

for i in foo bar baz
do
    alias $i="GHCRTS= $i"
done
于 2012-09-07T19:27:29.210 に答える