タグ

Programmingとmemory_managementに関するpipeheadのブックマーク (18)

  • RubyとPythonにおけるガベージコレクションの視覚化 | POSTD

    稿は、ブダペストで開かれたイベント「 RuPy 」で、Pat Shaughnessyが披露したプレゼンの内容をまとめたものです。 プレゼンの映像はここ から視聴できます。 稿は当初、 同氏の個人ブログ に投稿されましたが、同氏の了承を得て、Codeshipに再掲載します。 このイベントは「RubyPython」に関するカンファレンスなので、RubyPythonでは、ガベージコレクション(以下「GC」)の動作がどう違うのかを比較すると面白いだろうと私は思いました。 ただしその題に入る前に、そもそもなぜ、GCを取り上げるのかについてお話しします。正直言って、すごく魅力的な、わくわくするテーマではないですよね? 皆さんの中でGCと聞いて、心がときめいた方はいらっしゃいますか? [実はこのカンファレンス出席者の中で、ここで手を挙げた人は数名いました!] Rubyコミュニティで最近、Rub

    RubyとPythonにおけるガベージコレクションの視覚化 | POSTD
    pipehead
    pipehead 2015/08/05
    https://blog.codeship.com/visualizing-garbage-collection-ruby-python/ の和訳; Ruby: マークアンドスイープ; Python: 参照カウント
  • 視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD

    ほとんどの開発者は、自動のガベージコレクション(GC)を当たり前のように使っています。これは、私たちの仕事を容易にするために言語ランタイムが提供する素晴らしい機能の1つです。 しかし、最新のガベージコレクタの中をのぞいてみれば、実際の仕組みは非常に理解しづらいことが分かります。実装の詳細が無数にあるため、それが何をしようとしているのか、また、それがとんでもなく間違った事態を引き起こしかねないことについて十分理解していない限り、すっかり混乱してしまうでしょう。 そこで、5種類のガベージコレクションアルゴリズムを持つおもちゃを作ってみました。小さいアニメーションはランタイムの動作から作成しました。もっと大きいアニメーションとそれを作成するコードは github.com/kenfox/gc-viz で見ることができます。単純なアニメーションによってこうした重要なアルゴリズムを明らかにできることは

    視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD
    pipehead
    pipehead 2014/11/10
    http://spin.atomicobject.com/2014/09/03/visualizing-garbage-collection-algorithms/ の和訳; 参照カウントコレクタ, マークスイープコレクタ, マークコンパクトコレクタ, コピーコレクタ
  • Learn web development  |  web.dev

    Web Platform Dive into the web platform, at your pace.

    Learn web development  |  web.dev
  • IE で メモリ を 強制的 に 解放 - galife

    メモリーリークに近い話とは思いますが、ちょっと毛色の違う内容です。 「JavaScript がメモリーを馬鹿いしてどうしようもない…」 「なぜかメモリーが確保されっぱなしなんだけど…?」 といった状況の解消法。 JavaScript にはガーベッジコレクタがあるから大丈夫… と、思われがちですが、ガーベッジコレクタは『当にメモリ解放が必要になるまで何もしない』というものです。 (状況が悪いとガーベッジコレクタは何もしてくれなくて、ブラウザが固まってしまいます。。) 「コストはかかるが、信用できないならプログラマが勝手にやってしまえ!!」という感じです。 削除候補のメモリを強制解放 ── CollectGarbage() 関数 ── 解放したいタイミングで window.CollectGarbage() を走らせることで、強制的にメモリを解放できます。 // IE 以外のブラウザ対策のた

    IE で メモリ を 強制的 に 解放 - galife
    pipehead
    pipehead 2013/05/10
    window.CollectGarbage()
  • 第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp

    なぜアルゴリズムを学ぶのか GCによる停止時間が長くなり、アプリケーションの処理時間が短くなると、業務に使える時間が短くなってしまいます。その問題を解決するために、GCをチューニングすることで、アプリケーションの停止時間を短くすることが考えられます。 その際大事なのは、GCのアルゴルズムを把握しておくことです。 GCのチューニングを行うときは、GCで行われている処理の内、どの処理に時間がかかっているかをモニタリング⇒分析⇒チューニングする、という流れになります。しかし、GCのアルゴリズムを知らないと、モニタリング結果を見てもどこに問題があるかがわからず、分析やチューニングを行うことができません。 今回は、以下の4つのアルゴリズムをご紹介します。 マーク&スイープGC コンパクション コピーGC 世代別GC GCのアルゴリズムはJVMの実装によって異なりますが、多くの場合、上記4つのアルゴリ

    第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp
    pipehead
    pipehead 2013/03/27
    マーク & スイープ GC, コンパクション, コピー GC, 世代別 GC
  • エデンの園でおきたこと - steps to phantasien

    有給を駆使し一足早くクリスマス休暇に突入、ヒャッホイ Ingress やるぜーと 意気込んでいた矢先ノロウイルスにやられダウンした。かなしい。鎮まれ俺の胃袋・・・ そんな腹痛日和の気晴らしとして今日は Garbage Collection Advent Calendar に参加してみることにしました。 Advent Calendar 初体験につきよくわかってないけど勝手に参加していいんですよね? GC というとジェネレーショナルだのパラレルコンカレントだのといった話が目立ちがちだけれど、 現実の問題というかブラウザを相手にするとそれ以外の細々とした面倒が目につく。 GC つき言語 (JavaScript) のコードと C++ で書かれたコードとの連携は最たる面倒の1つ。 たとえば WebKit の DOM は C++ で実装されており、 C++ のオブジェクトは JavaScript 処理

  • new と delete と malloc と free と スタック と ヒープ - すたんだーどっ☆あいおーっ!

    new delete と malloc free メモリ確保解放の方法new deleteとmalloc freeの差 new delete C++から実装 newで確保するとコンストラクタが、deleteで開放するとデストラクタが呼ばれる。 malloc free Cで実装。C++でも使える mallocしてもコンストラクタは呼ばれない。 freeしてもデストラクタは呼ばれない。 共通 ヒープ領域に確保される。 解放を忘れるとメモリリークする。 種類 Cで使えるか C++で使えるか コンストラクタ デストラクタ 領域 解放 new delete 使えない 使える 通る ヒープ 手動 malloc free 使える 使える 通らない ヒープ 手動 スタック と ヒープ メモリ領域スタックとヒープの差 スタック 静的領域。 コンパイル時に決定される。 なので以下のような動的な記述(配列のサイ

    new と delete と malloc と free と スタック と ヒープ - すたんだーどっ☆あいおーっ!
  • クロージャとメモリリークについてのコピペ - こんにちはこんにちはmonmonです!

    前に見た時に理解できずにいた2chスレを備忘録としてコピペ。 時間あったら整形する。 + JavaScript の質問用スレッド vol.52 + 元々のスレ:http://pc8.2ch.net/test/read.cgi/hp/1161422792/ 過去スレ保管庫:http://wing2.jp/~mirrorhenkan/2ch/javascript/read.php/1161422792/ 670 名前:Name_Not_Found[sage] 投稿日:2006/11/24(金) 11:42:28 ID:??? >>666 自分でそういう関数を1行で定義して使うのはいいんじゃねの? >>669 setAttributeダサイ! >>667 ホレ。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html><head><tit

    クロージャとメモリリークについてのコピペ - こんにちはこんにちはmonmonです!
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Ajaxにおけるメモリリークの注意点 - suVeneのアレ

    [ajax][javascript][はてブ] はてブの「ブックマークの確認」ページは、IEでメモリリークする! IE のメモリリーク調べる為の「Drip」ってツールが ここにあって、 このツールは単純にリークしそうなコードチェックしたり、 オートリロードして、外部から参照したメモリ使用量を記録してくれるだけなんだが はてブの追加ページで確認するとこんな感じになる。 (オートリロードなんで負荷高くなるから、悪用したり、やりすぎたりしないようにw) タスクマネージャー等の、外部から参照したメモリが増えているからといっても OSがアプリケーション用にキャッシュしているメモリが増加しているだけの 可能性があるから、一概に鵜呑みはできないんだが 平均して1回のリロードに 1M 近く増えていくとかおかしい。 (MicroSoft もタスクマネージャーで確認しろっつってるし) IE単独だと、閉じた時点

    Ajaxにおけるメモリリークの注意点 - suVeneのアレ
  • Internet Explorer リーク パターンを理解して解決する

    Justin Rogers Microsoft Corporation June 2005 日語版最終更新日 2006 年 2 月 3 日 Web 開発者の進化 以前は、メモリ リークは Web 開発者にとって大きな問題ではありませんでした。ページは比較的単純に保たれ、サイト内の異なるロケーション間のナビゲーションは解放されたメモリをクリーンアップするうえで優れた方法でした。リークがあった場合も、たいていは気付かないほど小さなものでした。 新しい Web アプリケーションは、より高い標準に従います。ページはナビゲートされずに何時間も実行され、Web サービスを通じて更新情報を動的に取得する場合があります。複合イベント スキーム、オブジェクト指向の JScript、およびアプリケーション全体を生成するためのクロージャを組み合わせることで、言語機能が限界点に達します。これらの変更およびその他

    Internet Explorer リーク パターンを理解して解決する
  • DOM オブジェクトとメモリリーク: Days on the Moon

    IE でのメモリリーク ちょこちょこと紹介されているので知っている人も多いと思うが、IE には DOM ノードに絡んだメモリリークの問題がある。これに関しては Microsoft 自身の記事である「Understanding and Solving Internet Explorer Leak Patterns」に詳しいが、簡単にいえば DOM ノードオブジェクトに関する循環参照を作ると、IE を終了させるまでそのオブジェクトが解放されないというものだ。記事によればメモリリークには以下のようなパターンがあるという。 1. 単純な循環参照 ある DOM ノードオブジェクトのプロパティをたどっていくと自分自身に行き着く場合。以下のようなパターンが考えられる。 element.property == element element1.property1 == element2, element2

  • 世代別ガベージコレクション - Wikipedia

    世代別ガベージコレクション (英: generational garbage collection) はガベージコレクションの手法のひとつである。別名として、ジェネレーション・スキャベンジング (英: generation scavenging) とも呼ばれる。以下、ガベージコレクションをGCと省略する。 GCを持つ言語上で動く実システムでは、経験上メモリオブジェクトの利用に、ある偏りが存在する。それは「計算途上で利用される一時オブジェクトは数が多く、かつすぐさま破棄される率が高い」「ある程度長く生存したオブジェクトは、以降も長く生存する率が高い」という傾向である。 この傾向に着目し、メモリ領域を2つの世代に分離する。 第1世代 (young generation) に属するオブジェクトは小さな領域で高速なコピーGCを繰り返し、積極的に回収する。 第2世代 (old generation)

  • マーク・アンド・スイープ - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "マーク・アンド・スイープ" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2021年6月) 基的な方針は、あるオブジェクト(ここでは、ルートオブジェクトと呼ぶ)からのトラバース(オブジェクトから別のオブジェクトへの参照を辿ること)によって到達可能なオブジェクトに印(マーク)をつけ、印のつかなかったオブジェクトを破棄(スイープ)する、というものである。 具体的な手順の一例は次のようになる: ルートオブジェクトに印をつける 直前に印をつけたオブジェクトから、1回のトラバースで到達可能なすべてのオブジェクトに印をつける(すでに印がついてい

  • 終了いたしました。

    作者ホームページサービス(hp.vector)は終了いたしました。 長らくのご利用、ありがとうございます。 ご不明な点があれば、お問い合わせページをご覧の上、お問い合わせください。 ※15秒後にトップページに戻ります。 (c) Vector HOLDINGS Inc.All Rights Reserved.

  • 参照カウント - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。 出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "参照カウント" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL (2021年5月) 参照カウント(さんしょうカウント、英: reference counting)は、メモリオブジェクトのライフサイクル(寿命)管理に使用される方式のひとつ。ガベージコレクションの実装方法およびガベージコレクタの動作方法のひとつとしても利用される。また、コピーオンライトの実装方法としても多用される。 すべてのオブジェクト(メモリ上に置かれているデータの単位)に対して、参照カウントと呼ばれる整数値を付加しておく。これは、このオブジェクトへの参照(あるいはポインタ

  • ガベージコレクション - Wikipedia

    ガベージコレクション[注釈 1](英: garbage collection、GC)とは、コンピュータプログラムが動的に確保したメモリ領域のうち、不要になった領域を自動的に解放する機能である。1959年ごろ、LISPにおける問題を解決するためジョン・マッカーシーによって発明された[1][2]。 メモリの断片化を解消する機能はコンパクション(英: memory compaction)と呼ばれ、実現方法によってはガベージコレクションと共にコンパクションも行う仕組みになっている。そのためコンパクションを含めてガベージコレクションと呼ぶ場合もあるが、厳密には区別される。 また、ガベージコレクションを行う主体はガベージコレクタ(英: garbage collector)と呼ばれる。ガベージコレクタはタスクやスレッドとして実装される場合が多い。 「ガベージコレクション」を直訳すれば「ゴミ集め」「ごみ拾

    pipehead
    pipehead 2003/02/13
    garbage collection, GC
  • メモリ管理~windowsのメモリ割り当て~

    Win32は「仮想メモリ」をサポートしている。Windows上で実行されているプロセスは、実際の物理メモリの容量に関わらず、プロセスごとに4Gバイトの仮想メモリ空間が割り当てられる。 仮想メモリ空間は、ページと呼ばれる単位で管理される。x86系ならば1メモリページは4Kバイトである。システムは、プロセスの仮想メモリ空間中で、プロセスが使用しているメモリページだけを物理メモリに割り当て、未使用のメモリページは物理メモリに割り当てない。この仕組みにより、物理メモリの容量を超える仮想メモリ空間を実現することができる。 物理メモリには、RAMとページングファイルがある。システムは、RAMの容量以上の物理メモリが必要になると、RAM上のメモリページをページングファイルに退避し、RAM上に空きメモリページを作り、このページを使用する。ページングファイルに退避されたメモリページに割り当てられていた仮想メ

    pipehead
    pipehead 1999/04/05
    Win32 のメモリ管理について
  • 1