タグ

gcに関するkoki-hのブックマーク (6)

  • RAII - Wikipedia

    RAII(Resource Acquisition Is Initialization)は、日語では「リソース取得は初期化である」「リソースの確保は初期化時に」「リソースの取得と初期化」などの意味を持ち、資源(リソース)の確保と解放を、クラス型の変数の初期化と破棄処理に結び付けるというプログラミングのテクニックである。特にC++とD言語で一般的であり、デストラクタをサポートしないC言語などに対する優位性や利便性のうちのひとつとなっている。 RAIIでは、資源の取得をクラス型変数の構築(初期化)時に、また返却を破壊時に行う。特にプログラムの制御フローが自動変数の属するブロックを抜けるとき、その変数のデストラクタが自動的に呼ばれるため、デストラクタを適切に記述したクラス型変数の寿命が終わるとすぐに資源が返却されることが保証できるようになる。これは例外が発生したときでも同様であるため、RAII

    koki-h
    koki-h 2008/03/23
    Resource Acquisition Is Initialization
  • L'eclat des jours(2008-03-23)

    _ リファレンスカウント方式のGCと参照判定方式のGC 参照判定という呼び方があるかどうかは知らないけど、コピー方式はマーク&スィープとは区別されていたように記憶しているし、いずれも有効な参照があるかどうかを判定するという点で、利用側がリファレンスカウンタを操作する方法とは区別されているから、そう分けてみた。 で、リファレンスカウント方式というと、僕は代表的な実装としてCOMを思い浮かべる。COMの場合、言語がVBであれば参照カウンターの処理は処理系が行い、プログラミング言語のソースには直接は示されない(だから、VBプログラムでCOMリークというのは目にしたことはない)、同じくソースコードに明示的に表れないものにJScriptがある。一方、C++の場合は、明示的にAddRef/ReleaseのAPIでカウンタを操作する。ただし、提供されたスマートポインタを使って気にしないことも可能だった。

    koki-h
    koki-h 2008/03/23
  • 1.10 参照カウント法

    C や C++のような言語では、プログラマはヒープ上のメモリを 動的に確保したり解放したりする責任があります。 こうした作業は C では関数malloc() やfree() で 行います。C++では質的に同じ意味で演算子new や delete が使われます。そこで、以下の議論は C の場合に限定 して行います。 malloc() が確保する全てのメモリブロックは、最終的には free() を厳密に一度だけ呼び出して利用可能メモリのプールに 戻さねばなりません。そこで、適切な時にfree() を呼び出す ことが重要になります。 あるメモリブロックに対して、free() を呼ばなかったにも かかわらずそのアドレスを忘却してしまうと、ブロックが占有しているメモリ はプログラムが終了するまで再利用できなくなります。 これはメモリリーク(memory leak) と呼ばれています。 逆に、プログ

  • 一般教養としてのGarbage Collection (PDF)

    Garbage Collection ( ) (endo@logos.t.u-tokyo.ac.jp) 6 : Jan 27, 2005 1 Garbage Collection ? 2 (1) (2) ( 1) C C++, Pascal ML Java, Perl C malloc (allocate) free ( malloc Java/C++ ML tuple record ) C ( / free) 12 ML tuple record garbage collection(GC) GC • UNIX (1995 ) emacs GC • Java web Java 0.5 / ( )black box GC GC ( 1) Java Sun HotSpot VM (Ver. 1.4.2) GC 3 generational GC (6.2 ) ( ) copying GC (

    koki-h
    koki-h 2008/03/20
    authorNari氏お奨め
  • 第5章 ガ-ベージコレクション

    プログラムの実行時イメージ 突然だが、章を始めるに先立ち、プログラム実行時のメモリ空間の状態につ いて予習をしておこうと思う。この章ではコンピュータの低レベルな部分にか なり踏み込んでいくことになるので、あらかじめある程度の知識を仕入れてお かないと太刀打ちできないのだ。それにこの後の章になればいずれ必要になっ てくる。ここで一回やってしまえば後が楽だ。 セグメント 一般的なCプログラムではメモリ空間の中に以下の部分を持つ。 テキスト領域 スタティック変数やグローバル変数の置場 マシンスタック ヒープ テキスト領域はコードが置いてあるところ。二番目は見ての通り。マシンスタッ クには関数の引数やローカル変数が積まれる。ヒープはmalloc()で割り当てて もらうところだ。 三つめのマシンスタックについてもう少し話そう。マシン「スタック」と言う くらいだから当然スタック構造をしている。つまり

    koki-h
    koki-h 2008/03/16
  • GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)

    GCアルゴリズム詳細解説 日語の資料がすくないGCアルゴリズムについて詳細に解説します トップページページ一覧メンバー編集 GC 最終更新: author_nari 2010年03月14日(日) 20:47:11履歴 Tweet このWikiが目指す所 GCとは? GCを学ぶ前に知っておく事 実行時メモリ構造 基アルゴリズム編 Reference Counter Mark&Sweep Copying 応用アルゴリズム編 IncrementalGC 世代別GC スナップショット型GC LazySweep TwoFinger Lisp2 Partial Mark and Sweep -Cycle Collection- Mostly Parallel GC train gc MostlyCopyingGC(Bartlett 1989) TreadmillGC(Barker 1992) 補足

    GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
    koki-h
    koki-h 2008/03/16
  • 1