Archive for 2007年1月23日

コードピッチテクニック (code pitching technique ) とは

2007年1月23日

コードピッチテクニック (code pitching technique ) とは
 
しばらく使われていないメソッドで使われているメモリを解放し、メソッドのネィティブコードコードブロックを解放する機能。
コードブロックをスタブで置き換え、再度呼ばれた時にスタブがJITerを呼び出し、ネィティブコードを再生成する。
 
ふ~~ん、苦労しているねぇ・・・
早く Windows Mobile 6.0 出ないかな・・・そうすればメモリの制約がかなり軽減されるはず。
 
参照先
 
In addition, the economy JITter supports code pitching. Code pitching is the ability for the common language runtime to discard a method’s native code block, freeing up memory used by methods that haven’t been executed in a while. Of course, when the common language runtime pitches a block of code, it replaces the method with a stub so that the JITter can regenerate the native code the next time the method is called.

 

 

広告

Compact Framework のメモリ管理

2007年1月23日

W-Zero3 用のメモリ状況を表示するアプリケーションを作ってみたところ、メモリの挙動がおかしい。
 
たとえば、
起動初期状態で25MBほどあるフリーメモリーが、アプリを起動した後は22MBぐらいになる。
その後、メールを見たり、IEを開いたり、いろいろ使っているうちに10MBぐらいになる。
その後、すべてのアプリケーションを閉じてメモリを解放しても、初期の25MBには戻らず、15MB程度になる。
 
最初、プログラムのメモリ管理が悪く、Disposeまわりでメモリーリークが発生しているのかと思っていろいろやってみたが、先にポスとしたプログラムなので、そんなメモリリークが発生するような複雑なコードではない。
 
MSDN を調べてみたところ、やはりシステム側で動的にキャッシュを管理しているということですね。
 
MSDN の記事は次の通り。
 

RAM ストレージ

ランダム アクセス メモリ (RAM) を使用して、動的なデータ構造と JIT でコンパイルされたコードを保存します。.NET Compact Framework は、デバイスで指定された制限内で、使用可能な RAM を使用して生成されたコードやデータ構造をキャッシュし、後から適宜メモリを解放します。

メモリ不足になると、共通言語ランタイムではコードピッチ技法を使用して、JIT でコンパイルされたコード ブロックを実行時に解放します。これにより、RAM に制約のあるシステムで大きいプログラムを実行するときに、パフォーマンスの低下を最小限に抑えることができます。
 』