[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

タグ

GCとgcに関するyou21979のブックマーク (17)

  • 視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD

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

    視覚化による5つのガベージコレクションアルゴリズム入門 | POSTD
  • 【JavaScript】メモリの浪費を避けるコーディング | ヘッドウォータースのブログ TechNote

    こんにちは。良昌です。 Facebook、GithubなどのJSON形式でユーザ情報を返却するAPIや、PhoneGap、Monacaなどのスマートフォンのマルチプラットフォームを提供するライブラリ、IDEが開発ツールとして定着してきたことにより、JavaScriptを利用する機会が増えたのではないでしょうか。 今回は、JavaScriptコンテナがWebブラウザの場合に、動的に確保されるメモリ領域の浪費を避ける方法について書きたいと思います。 JavaScriptにおけるメモリの浪費を避けるコーディング JavaScriptにおけるメモリの浪費を避けるコーディングをするためには、GC(ガベージコレクション)、クロージャについての知識が必要です。まずは、この2つの機能について説明していきます。 ■GC(ガベージコレクション) GCとはプログラムが動的に確保したメモリ領域の内、不要になった領

    【JavaScript】メモリの浪費を避けるコーディング | ヘッドウォータースのブログ TechNote
  • # GCなし、コルーチン、node.js、Lindaを合体 | flat7th

    自分の理想のプログラミングスタイル 以下の概念をあわせると、自分の理想のプログラミングスタイルになる。 好き勝手に new/delete しない、GCしない コルーチン node.js のようなイベントドリブン発展系 Linda 下記のような「クラスっぽい何か」をグラフ構造でつないで計算処理を行う。 グラフ構造上の各ノードは、フィルタ的に「入ってきたら何か出す」方式で動く。まぁ全員常駐だな。 名前空間の宣言 クラスっぽい何かのくくり: { インスタンス変数の宣言とか定義とか。 コンストラクタ的なこと: { } デストラクタ的なこと: { } 何らかのタスク的なことその1: //パブリック { このタスクと、生存期間が同じオブジェクトの生成宣言 イベント処理その1: 起動タイミング指定と入力データの指定を書く //プライベート { ローカル変数、 順列、繰り返し、選択分岐 によるいわゆるノイ

    you21979
    you21979 2013/10/21
  • Flashのガベージコレクション – 遅延参照カウント – Rest Term

    前回のエントリーの続きです。 Flashのガベージコレクションに関する正しい理解 ——————– Flash Player(AVM2)のガベージコレクション(以下 GC)は以下のアルゴリズムを採用しています。 (参照: AS3TuningInsideAVM2JIT.pdf) * Deferred Reference Counting (DRC) * Backed by incremental conservative mark/sweep collector 今回は1つめの「遅延参照カウント」について。 「詳説 ActionScript 3.0」14章のガベージコレクションの説明が”詳説”というよりも”概要”にしかなってなかったので、やっぱりMMgc (TamarinのGC実装)の方を読むしかなさそうです。。 参照カウント まずは基のアルゴリズム、参照カウントについて。オブジェクトは自分

  • RubyとGCについて - mirichiの日記

    思ったことをつらつらと支離滅裂な個人的メモ。 1.シンプルマルチスレッドGC このあいだからいじってるやつだが、とりあえず世代別GCがあるのとないので3倍も違うというのはおかしいのでまだどこかバグっているんじゃないかと思う。効率面での話なのでヒープスロットの取得・解放戦略のへんが怪しい。 単純な再帰型マーク関数を2つのスレッドで同時に動かすというのは、まあそれなりに短時間で終わるのだろうが、それはあくまでも遊んでるCPUがあるという前提であって、システム全体のスループットとしてはたぶんあまり嬉しい話ではないだろう。作るのは楽だが無駄が多い。 このシンプルな手法が通用するのは関数を再帰呼び出しするというマシンスタックを使った探索の場合のみであり、たとえばmrubyrubyのようにリストを繋いだりたどったりする方法ではリストのアクセスに排他制御が必要になって思ったような性能は出ないと思われる

    RubyとGCについて - mirichiの日記
  • Haskell の GC を比較してみる - dec9ue's diary

    GC Advent Calendar 22日目の記事です。 同じ言語に対する異なる処理系があれば、GCを比べてみたくなるのは人間のサガですよね。 今回はHaskellの2つの処理系のGCを比べて見ることにします。 ■ GHC(the Glasgow Haskell Compiler) Haskellの実行系といえばこれ。というような処理系です。Javaで言えばOracle JRE、Rubyで言えばCRubyというところでしょうか。実用世界の処理系なので様々なオプションや最適化の実装が施されています。 ■ JHC コード効率を優先した処理系です。様々なコンパイラテクニックをフルスケールのコンパイラに実装するための場である、というようなコンセプト説明がされています。頭文字のJはJohn Meachamの頭文字なんでしょうか。 それぞれのGCの特徴 ■ GHC ではまず、GHCから。 GHCのG

    Haskell の GC を比較してみる - dec9ue's diary
  • Mostly-Concurrent Mark & Sweep GC のアルゴリズム

    目次 1. 前置き 2. HotSpot VM 1.4.x の GC の種類 3. Mostly-concurrent Mark & Sweep 4. 応用 4.1 世代別 GC との組み合わせ 4.2 カードマーキング (Card Marking) 4.3 並列化 (Parallel GC) 4.4 ビットワイズ・スイープ (Bitwise Sweep) 4.5 インクリメンタル・コンパクション (Incremental Compaction) 5. 参考文献 脚注 コメント 1. 背景 ガーベージコレクション(GC) には色々なアルゴリズムが存在するが、大雑把に言って Stop-the-World (STW) 型 GC と On-the-fly 型 GC に大別される。 STW 型の GC はプログラムの実行中にはガーベージの回収を行わず、メモリが枯渇した時になって始めてガーベージの回

  • Ruby 1.9.3 Preview 1がリリース。Lazy Sweep GCにより、GCの停止時間が改善。

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Ruby 1.9.3 Preview 1がリリース。Lazy Sweep GCにより、GCの停止時間が改善。
  • GCを切る中村氏 (r7kamura) と GCを改善する中村氏 (nari3)

    mirakui_retro @mirakui_retro unicornのworkerのGC切るかわりにライフサイクルを短くしまくってると高速化はされるけど大量の初期化処理とどう向き合うかっていう問題にかわる

    GCを切る中村氏 (r7kamura) と GCを改善する中村氏 (nari3)
  • JJUG JavaOne 2012 San Francisco 報告会 LT(G1GC)

    JJUG JavaOne 2012 San Francisco 報告会, LT - G1GC のスライドです。 This Presentation Slide is the LT about G1GC at JJUG JavaOne 2012 San Francisco Briefing Meeting(Tokyo/Japan), 2012/11/9, Gree Inc.Read less

  • 第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp

    原因は大きく分けて3つあります。 1つめは、リソース不足です。たとえば、CPUのクロックやコアが足りず、処理の完了待ちであることなどが原因として考えられます。 図1 CPUのリソース不足の例 2つめは、M/W(ミドルウェア)からアプリケーションに提供されるスレッドや、コネクションのプールにあるリソースが不足していて、その提供待ち(無応答)になっている可能性です。 M/Wでプールしているリソースが不足した状況は、会社の書籍棚に1冊しかないを社員で順番待ちしている状況に似ています。1冊しかないため、今借りている人が返すまでは他の人は借りれません。 図2 M/Wでプールされたリソースが不足しているケース 1つめのケースで問題がGCにある場合、GCに割り当てるリソースのバランスが悪いことが原因です。たとえば、特定のプロセスに対するCPUリソースの割り当てが大きい場合、GCが起きると、CPUリソー

    第3回 システムトラブルの原因はGCの実装を知れば見えてくる | gihyo.jp
    you21979
    you21979 2013/02/14
  • Every Byte is Sacred - 書評 - ガベージコレクションのアルゴリズムと実装 : 404 Blog Not Found

    2010年03月20日04:30 カテゴリ書評/画評/品評Lightweight Languages Every Byte is Sacred - 書評 - ガベージコレクションのアルゴリズムと実装 著者より献御礼。 ガベージコレクションの アルゴリズムと実装 中村成洋 / 相川光 / 竹内郁雄監 これほど地味かつ即実務に役立たない、しかし確実にプログラマーの滋養になるが出版される日の出版界に乾杯!世界で二番目(著者調べ)、国内で初のGCは、実に滋味豊かだ。 とはいえ、書はこの話題に関してMECEというわけでもない。というわけでentryでは書に何が書いていないかを主に紹介していく。何が書いてあるかは書で確認すればよいのだから。 書「ガベージコレクションのアルゴリズムと実装」は、コンピューターの資源管理の技術の一つ、ガベージコレクション(以下GC)についてまるまる一冊を費

    Every Byte is Sacred - 書評 - ガベージコレクションのアルゴリズムと実装 : 404 Blog Not Found
  • 例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)

    最近クックパッドでは、アプリケーションサーバの大半が Rails 2.3 から Rails 3 に置き換わったのですが*1、リリース前のベンチマークの時点ではあまりパフォーマンスが出ず四苦八苦していました。具体的には Rails 2.3 の時と比べ MRI 1.8.7 だとレスポンスタムが200%ぐらい遅い結果でした。Rails 3 になって実装が Merb core を取り入れ疎結合で綺麗になった反面、より多くのオブジェクトと・メモリを利用する様になった影響かと思います。 そこで Ruby インタプリタの変更*2を行い検証をしたところ MRI 1.8.7 (Rails 2.3と比べ) 約200%遅い MRI 1.8.7 -> Ruby Enterprise Edition 1.8.7 2011.03 (tcmalloc 無効) 約180%低速 MRI 1.8.7 -> Ruby Ente

    例えば GC を止める・Ruby ウェブアプリケーションの高速化 - 2nd life (移転しました)
  • Let's WeakMap - 枕を欹てて聴く

    ES.nextとして入っていて, ECMAScript 6にも入りそうな気配がするWeakMap. という訳で. WeakMapとは WeakMapとは, harmony:weak_maps [ES Wiki] keyへの参照が弱参照 keyが任意のObject valueはなんでもあり というものです. 弱参照であるため, WeakMapのkeyに指定されたObjectが, weakなreferenceからしか参照されていなかった場合, GCに回収されます. また, WeakMapという名前が隠しがちですが, どちらかと言うと主機能は任意のObjectがkeyとして取れるということでしょう. var map = new WeakMap(); var obj = {}; map[obj] = "OK"; // このとき, toString()されたりしない. Objectをとれる 従来のO

    Let's WeakMap - 枕を欹てて聴く
  • https://blogs.oracle.com/cinnabar/entry/v8_for_google_chrome

    you21979
    you21979 2012/08/31
  • steps to phantasien(2008-09-07) v8祭り

    ウェブっ子の間では Google Chrome の JS 処理系である V8 祭りが絶賛開催中らしい. いつもは出遅れる私もたまにはやんやしたいと思っていろいろ読んでみたものの, VM に傷気味な自分に気付いた. けれど, そうは言っても祭りは別腹. 一通り騒いでみます. 販促マンガ や 資料 によれば, V8 は以下のような特徴を備えている. hidden class transition と fast property access generational accurate GC accurate だから incremental GC もできる オブジェクトの rellocation はするけど handle は使わず参照元書き換え 中間表現のインタプリタなしの native code 生成. instruction cache コードをみたところ, incremental GC

    you21979
    you21979 2012/08/31
  • 第5章 ガ-ベージコレクション

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

  • 1