エスケープ解析とは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 学問 > 学術 > 解析 > エスケープ解析の意味・解説 

エスケープ解析

(Escape analysis から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/03/28 02:38 UTC 版)

エスケープ解析(エスケープかいせき、: Escape analysis)とは、コンパイラ最適化理論において、ポインタの動的なスコープを特定するための方法である。エスケープ解析は、ポインタ解析シェープ解析と関連している。

サブルーチンにおいて変数やオブジェクトが割り当てられるとき、変数へのポインタが、別の実行スレッドや呼び出し元のルーチンに「エスケープ」してしまうことがある。サブルーチンがオブジェクトを割り当て、これに対するポインタを返却すると、オブジェクトはプログラム内の不定の場所からアクセスすることができる。ポインタがグローバル変数やその他のデータ構造に格納された場合にも、現在の処理からエスケープしたと考えることができる。

エスケープ解析は、ポインタが格納されうるすべての場所を特定し、ポインタの生存区間を現在の関数やスレッド内のみに限定してよいかどうかを判断する。

最適化

コンパイラはエスケープ解析の結果を、最適化のための土台として用いる。

  • ヒープの割り当てスタックの割り当てへの置き換え: オブジェクトがサブルーチン内で割り当てられ、オブジェクトへのポインタがエスケープしなければ、そのオブジェクトはヒープの代わりにスタックに割り当てる候補になる。
  • 同期処理の省略: オブジェクトが1スレッド内でのみアクセスされることがわかれば、オブジェクトに対する処理は同期処理を実施せずに行うことができる。
  • オブジェクトの分割あるいはスカラー変数への置換: オブジェクトへのアクセス方法により、オブジェクトがメモリ構造上連続して存在する必要がないことが判明した場合、オブジェクトの一部をメモリではなく CPU のレジスタに格納できる場合がある。

実用上の考慮点

オブジェクト指向プログラム言語では、動的コンパイラがエスケープ解析を行いうる特に有力な候補である。伝統的な静的コンパイルによるメソッドのオーバーライドでは、エスケープ解析が不可能な場合がある。あるメソッドが、ポインタをエスケープする別のバージョンのメソッドによりオーバーライドされる可能性があるためである。動的コンパイラはオーバーロードについての情報を元にエスケープ解析を行い、動的ローディングによってメソッドがオーバーライドされた場合には再度解析を実施することができる。

エスケープ解析は Java 言語により特に興味の対象となってきた。Java のヒープに限定したオブジェクトの割り当て、スレッドのサポート、Sun の HotSpot 動的コンパイラ、という組み合わせが、エスケープ解析に関連した最適化の有望なプラットフォームを作り出している。(Escape analysis in Java参照)。エスケープ解析は、Java Standard Edition 6 で実装されている。

関連項目





エスケープ解析と同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「エスケープ解析」の関連用語

エスケープ解析のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



エスケープ解析のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのエスケープ解析 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS