![5分でわかるガベージコレクションの仕組み](https://cdn-ak-scissors.b.st-hatena.com/image/square/5fa621f20bdea4607ab0695c173665a7f3e526a4/height=288;version=1;width=512/https%3A%2F%2Fgeechs-magazine.com%2Fwp-content%2Fuploads%2F2016%2F02%2F20170112_remind.png)
ほとんどの開発者は、自動のガベージコレクション(GC)を当たり前のように使っています。これは、私たちの仕事を容易にするために言語ランタイムが提供する素晴らしい機能の1つです。 しかし、最新のガベージコレクタの中をのぞいてみれば、実際の仕組みは非常に理解しづらいことが分かります。実装の詳細が無数にあるため、それが何をしようとしているのか、また、それがとんでもなく間違った事態を引き起こしかねないことについて十分理解していない限り、すっかり混乱してしまうでしょう。 そこで、5種類のガベージコレクションアルゴリズムを持つおもちゃを作ってみました。小さいアニメーションはランタイムの動作から作成しました。もっと大きいアニメーションとそれを作成するコードは github.com/kenfox/gc-viz で見ることができます。単純なアニメーションによってこうした重要なアルゴリズムを明らかにできることは
[[20041124212113]] 『VBA:変数の開放の必要性』(みやほりん) ページの最後に飛ぶ [ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ] 『VBA:変数の開放の必要性』(みやほりん) いつもお世話になっています。 今日は「変数の開放」についての質問をさせていただきます。 [[20041124113752]] 『各シートごと選択されているセル範囲の格納』(kaze) こちらのトピックで[川野鮎太郎]さんが >セットしたら開放 と書いておられます。 モジュールレベル変数やグローバル変数として宣言したものは そのような開放処理の必要な場合があるのは理解できますが、 私はプロシージャレベルで宣言した変数は、そのプロシージャの実行が 終了した時点で自動的に開放されると理解しているものですから、 サンプルコードで最後に「Set 変数 = Nothing」なんて見
Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode
あるアプリケーションの作業にとって、スループットは最も重要なターゲットです。1つ例を挙げると、長時間実行されるバッチ処理のジョブです。ガベージコレクションが実行されている間、バッチジョブが時々1、2秒止まっても、ジョブ全体がすぐに完了すれば問題ありません。 人間が直接対話するアプリケーションから金融取引システムまで、実質的な他のすべての作業では、システムが1、2秒か、数ミリ秒以上反応しない場合、大変なことになり得ます。金融取引では、しばしば一貫した停止時間と引き換えに、スループットを犠牲にするだけの価値はあります。物理的に利用可能なメモリ量によって制限されるアプリケーションを持ったり、footprintを維持しなければならなかったりすることもあります。そのような場合、停止時間とスループットの面の両方で、パフォーマンスをあきらめなければなりません。 以下のトレードオフは度々起こります。 大部
ページが見つかりません。 目的のページは、移動または削除によって無効になっている可能性があります。申し訳ありませんが、検索またはリンク先よりお探しください。
Tenured領域を早く使ってしまうパターン 前回ご紹介したように、HotSpotのヒープでは、アプリケーションがオブジェクトを作成するとまずはじめにEden領域が割り当てられ、マイナーGCによってSuvivor領域、Tenured領域へと移動していく流れが一般的でした。 しかし、このパターンではないイレギュラーなパターンがいくつか存在します。 その1つが、「オブジェクトが一般的なパターンに比べ、早くTenured領域に移動してしまう」というものです。 図1 Tenured領域を早く使ってしまう例 Tenured領域はメジャーGCの対象であり、メジャーGCはNew領域を対象とするマイナーGCに比べ、はるかに停止時間が長くなります。そのため、このようなパターンが頻繁に起こる場合は、メジャーGCの多発によってアプリケーションの停止時間が増加します。 図2 Tenured領域を早く使ってしまう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く