並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 68件

新着順 人気順

gcの検索結果1 - 40 件 / 68件

  • 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 Pa

      GC - GCアルゴリズム詳細解説 - livedoor Wiki(ウィキ)
    • 3G端末(FOMA・WIN・3GC)のモバイルサイトのコーディング&デザイン - livedoor ディレクター Blog(ブログ)

      こんにちは。『Cure』や『livedoor 歌詞』を担当しているモバイルディレクターの吉沢です。 つい最近、PC サイトのディレクターが初めてモバイルサイトの開発を担当するという機会がありました。 どの情報を伝えれば初めてモバイルサイトを担当する人にもスムーズに進められるのか、PC とモバイルで一番特徴のあるコーディングとデザインについて、これだけ覚えておくと簡単な3G(FOMA・WIN・3GC)端末用モバイルサイトが作れてしまうノウハウをご紹介したいと思います。 【01】対応端末について こちらの記事にもあるとおり、3G 端末(FOMA・WIN・3GC)がアクセスの9割を占めているため、これからオープンさせるサイトの対応端末は、3G 端末で十分そうですね。 サイトの内容にもよりますが、下位端末(PDC・P型・C型など)を対応端末として含めてしまうと、機能や容量制限などに悩まされ、逆に運

        3G端末(FOMA・WIN・3GC)のモバイルサイトのコーディング&デザイン - livedoor ディレクター Blog(ブログ)
      • git gc の仕組みを原理から理解してサイズを 136MB → 7.2MB(95%減)まで削減した時の勉強メモ

        個人用メモです。 「git gcってあんまし容量減らないよなぁ」 と思ったのが動機です。調べたけどパッと腑に落ちる記事がなかったので「自分で git のソースコード見た方がいいな」と急にモチベ発動してグワっと勉強しました。またついでに歴史改変の方法も調べたのですが、公式で既に WARNING が出てるほど非推奨化されてるfilter-branchを使用してる記事が多かったので、2021 年現在で多分一番推奨されてるfilter-repoを使ってやる方法もまとめました。 ちなみに容量減らしても高速化するかというとそこまで単純ではないです。そもそも減らさなくても partial clone で blob オブジェクトを必要最低限に指定して昔の blob をデフォルトで持ってこないようにしたり(--no-checkoutと併用するとより効果有る)、その後本当に自分が必要なやつだけ sparse-

          git gc の仕組みを原理から理解してサイズを 136MB → 7.2MB(95%減)まで削減した時の勉強メモ
        • GolangのGCを追う

          Go1.5とGo1.6でGoのGCのレイテンシが大きく改善された.この変更について「ちゃんと」理解するため,アルゴリズムレベルでGoのGCについて追ってみた. まずGoのGCの現状をパフォーマンス(レイテンシ)の観点からまとめる.次に具体的なアルゴリズムについて,そして最後に実際の現場でのチューニングはどうすれば良いのかについて解説する. GoのGCの今 最初にGoのGCの最近の流れ(2016年5月まで)をまとめる. Go1.4までは単純なStop The World(STW)GCが実装されていたがGo1.5からは新たなGCアルゴリズムが導入された.導入の際に設定された数値目標は大きなヒープサイズにおいてもレイテンシを10ms以下に抑えることであった.Go1.5で新たなアルゴリムが実装されGo1.6で最適化が行われた. 以下は公開されているベンチマーク.まずはGo1.5を見る. Gophe

          • Go言語のリアルタイムGC 理論と実践 | POSTD

            (編注:誤訳、意味の分かりづらい訳を修正しました。リクエストありがとうございました。) 毎日、Pusherは数十億のメッセージをリアルタイム、つまり送り元から宛先まで100ms未満で送信しています。どのようにしてそれを可能にしているのでしょうか。重要となる要因はGoの低レイテンシのガベージコレクタです。 ガベージコレクタはプログラムを一時停止させるものであり、リアルタイムシステムの悩みの種です。そのため、新しいメッセージバスを設計する際には慎重に言語を選びました。Goは 低レイテンシを強調している ものの、私たちは懐疑的でした。「本当にGoを使えば実現できるのか? もしできるならどうやって?」 このブログ記事ではGoのガベージコレクタを、どのように機能し(トリコロールアルゴリズム)、なぜ機能し(こんなに短いGCによる一時停止時間の実現)、そして何よりも、それが機能するのかどうか(GCによる

              Go言語のリアルタイムGC 理論と実践 | POSTD
            • 例えば 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 (移転しました)
              • Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か

                GC周りでトラブルシューティングした際の経験や、Web等で調べたことをまとめてみる。 前提 ・JVMは、Sun Javaを想定。(他は使ったことないです。。。) ・Sun Java 1.5-1.6を想定。 目標 マイナーGC、Full GCそれぞれが頻発することなく、かつそれぞれの実行時間を1秒未満に抑えること。 マイナーGCは1秒未満どころではなく、もっと短くなるべき。どれくらいが理想かは?(0.1秒未満ぐらいを目指したい?) 連続した負荷状態(想定されるピークアクセス)でもOutOfMemoryErrorが発生しないこと。 理想的な状態は、上記に加えて、Full GCの発生が低頻度であること。 具体的には、できるだけマイナーGCで短命オブジェクト(1回使ったらもう使わないようなオブジェクト。逆にセッションオブジェクト等は長命オブジェクトとなる)を破棄させて、短命オブジェクトが、Tenu

                  Javaメモリ、GCチューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か
                • mrubyのmrb_gc_arena_save()/mrb_gc_arena_restore()の使い方 - Matzにっき

                  _ 新PC GitHubスポンサーの収入がありそうな気がしたので(注文時点では未取得)、デスクトップPCを購入することにした。 意外かもしれないが、初デスクトップ。今回はサイコムというところで注文した。自作という選択肢もあったが、自分の不器用さをよく承知しているので(最近では液漏れで止まった時計を修理しようと分解して、再起不能にした)、BTOに。スペックは、 Ryzen9 3900 (12 core) 64GB memory 1TB SSD (M.2) Radeon RX560 で、先週届いて、早速Linux (Mint XFCE)をインストールしたのだが、しばらく使っていると突然落ちる。どうもグラフィック関係らしく、sshでログインして使っていると落ちない。GPUのベンチマークプログラムglmark2を実行すると即死。 で、購入先に相談したら、グラフィックボードの不良の可能性がありますね

                  • Go言語のGCについて - LINE ENGINEERING

                    なぜGo言語はコンパクションを採用していないのか GoogleのRick Hudson氏によるISMM 2018 Keynote “Getting To Go”を参照すると、以下のことがわかります。 2014年の時点では”Read barrier free concurrent copying GC”を計画していた しかし期間的な制約から断念し、CMSに舵を切った(この時期に彼らは、ランタイムをCからGoに書き換える作業も行う必要がありました。Changes to the runtime) TCMallocをベースとしたメモリアロケーターを採用することで、断片化およびアロケーションの速度の問題を解決した Go言語のメモリアロケーションについては、ランタイムのコードのコメントにも詳しく記載されています。 malloc.go This was originally based on tcmal

                      Go言語のGCについて - LINE ENGINEERING
                    • Haruhiko Okumura on Twitter: "今朝の朝日新聞に全面広告,「次亜塩素酸水溶液は空間噴霧が可能」「人体に安全で無害」 https://t.co/B0UElD6gC1"

                      今朝の朝日新聞に全面広告,「次亜塩素酸水溶液は空間噴霧が可能」「人体に安全で無害」 https://t.co/B0UElD6gC1

                        Haruhiko Okumura on Twitter: "今朝の朝日新聞に全面広告,「次亜塩素酸水溶液は空間噴霧が可能」「人体に安全で無害」 https://t.co/B0UElD6gC1"
                      • ざっくりわかった気になるモダンGC入門 - Cybozu Inside Out | サイボウズエンジニアのブログ

                        どうも!@yokotaso です! 2018/05/26のJJUG CCC 2018で「ざっくりわかった気になるモダンGC入門」というタイトルで登壇させていただきました。 現在開発中の新しいGCアルゴリズムをざっくり理解することをテーマに発表しました。 発表練習用に作ったカンペの内容を公開します。ブックマークコメントでもツイートでも感想を書いていただけると喜びます! 発表資料は、speakerdeck にあります。はじまり〜はじまり〜 はじめに 今日はざっくりわかった気になるモダンGC入門というお話をさせていただきます。 現在開発中のGCアルゴリズムの全体像を理解してもらうことを目的としたセッションです。よろしくおねがいします。 さて今日のアジェンダですが、まず簡単にこれまでのGCを復習した後に新しいGCが必要になってきた背景について少し話します。 次にShenandoahGC、ZGC、E

                          ざっくりわかった気になるモダンGC入門 - Cybozu Inside Out | サイボウズエンジニアのブログ
                        • Java 7 CMS GCの基本的な情報の整理 - nekop's blog

                          バッチ処理などスループット重視のアプリケーションはデフォルトのパラレルGCで良いが、Java EEアプリケーションサーバなどレスポンスタイム重視のものやHadoopなどのクラスタ系ソフトウェアで死活監視に引っ掛る系などのstop the worldをなるべく避けたいいわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。その場合にCMSのチューニングに踏み込もうとするとなんだか難しい記述がいっぱいで若干困るので、簡単なガイドをメモとして書いておく。 対象バージョンは以下。 $ java -version java version "1.7.0_51" OpenJDK Runtime Environment (fedora-2.4.5.1.fc20-x86_64 u51-b31) OpenJDK 64-Bit Serve

                            Java 7 CMS GCの基本的な情報の整理 - nekop's blog
                          • Ruby 2.7のここがすごい! パターンマッチ、コンパクションGCなどをリリースマネージャーに聞いた - エンジニアHub|Webエンジニアのキャリアを考える!

                            Ruby 2.7のここがすごい! パターンマッチ、コンパクションGCなどをリリースマネージャーに聞いた 2019年12月25日にリリースされたばかりのRuby 2.7では、どのような機能がどういった経緯で採用されているのでしょう。リリースマネージャーのnaruseさんと、フルタイムコミッターのmameさんに詳しくうかがいました。 まつもとさんはとにかく忙しくて 実はすごいirbの改良 パターンマッチはRubyをどう変えるか キーワード引数は、端的に壊れていたのを大整理した 高速化に向けたいくつかの観点 Ruby 2.7で導入される「コンパクションGC」とは Ruby 3のビジョンは「静的解析」「並行並列」「JIT」 プログラミング言語Rubyには、クリスマス前後に新しいバージョンをリリースする伝統があり、2013年の2.1.0以降は毎年12月25日にメジャーバージョンアップが行われています

                              Ruby 2.7のここがすごい! パターンマッチ、コンパクションGCなどをリリースマネージャーに聞いた - エンジニアHub|Webエンジニアのキャリアを考える!
                            • C言語でインクルードするだけで使えるNon-movingで正確なコピーGCを作った - Qiita

                              インクルードするだけで使えるNon-movingで正確なGCをC言語用に作りました。 行数がコメントを除いて100行に満たない非常に小さなライブラリです。 GCのアルゴリズムとしてはCheneyのコピーGCを採用しています。 通常のCheneyのコピーGCではメモリ空間のうち半分が無駄になってしまいメモリ効率が悪かったり、 GC発生時にオブジェクトが移動してしまいC言語のようなポインタを直接触れる言語との相性が悪いという欠点がありました。 今回はヒープ全体を二重連結リストとして管理することでそのような問題を解決しています。 ちなみにこれはTreadmill GCのアイデアと同じです。(が、アルゴリズム自体はTreadmill GCではありません。) APIはLinuxのlist.hに非常に近い見た目になっています。 ある構造体をgcで管理したい場合はstruct gc_head型のメンバを

                                C言語でインクルードするだけで使えるNon-movingで正確なコピーGCを作った - Qiita
                              • こなたま(CV:渡辺久美子) on Twitter: "これはかなりの衝撃を欧米に与える(それを狙ったニュースともいえる)。キリスト教国では「教会は攻撃しない」っていうのが伝統的な戦争の不文律で、中世の昔から非戦闘員が一時退避する場所だった。 https://t.co/BnjKN9gc7Q"

                                これはかなりの衝撃を欧米に与える(それを狙ったニュースともいえる)。キリスト教国では「教会は攻撃しない」っていうのが伝統的な戦争の不文律で、中世の昔から非戦闘員が一時退避する場所だった。 https://t.co/BnjKN9gc7Q

                                  こなたま(CV:渡辺久美子) on Twitter: "これはかなりの衝撃を欧米に与える(それを狙ったニュースともいえる)。キリスト教国では「教会は攻撃しない」っていうのが伝統的な戦争の不文律で、中世の昔から非戦闘員が一時退避する場所だった。 https://t.co/BnjKN9gc7Q"
                                • Go言語の低レイテンシGC実現のための取り組み | POSTD

                                  (訳注:2016/9/28、頂きましたフィードバックを元に記事を修正いたしました。) 私たち Twitch では、通信が大変混み合うシステムの多くで Go を採用しています。ライブ映像を配信したり、何百万人というユーザにチャットサービスを提供したりする場合に直面する問題を考慮すると、Goはそのシンプルさや安全性、パフォーマンス、読みやすさの点で良いツールだと言えます。 しかしこれは、私たちにとってGoがいかに素晴らしいツールかを説明する、よくある記事ではありません。Goで現在実装されているランタイムにより行き詰まったいくつかの局面をどう打開するか、さらに、私たちはそうした限界に達した時にどう対応したらいいのかについて書いたものです。 これからお話しするのは、「Go 1.4からGo 1.6へのGoランタイムの改善が、どのようにしてガベージコレクション(GC)の停止時間を20倍も改善することに

                                    Go言語の低レイテンシGC実現のための取り組み | POSTD
                                  • JavaのGCの仕組みを整理する - Qiita

                                    最近メモリを大量に使うJavaのプロセスに関する仕事があり、GCの知識が必要になったので調べたことをまとめておきます。調べたら色々出てくる時代ですが考えを整理するために書きました。間違った認識をしている可能性はあるのでそこはご指摘いただけると幸いです。 注: この記事は最新のGC事情を整理するものではなく、古典的?な手法について書いてます。 JVM まずはざっくりJavaの基本的な仕組みから。 JavaのプロセスはJVMと呼ばれる仮想マシンの上で動作します。この仕組みは様々なOSで動作し、環境の差異を気にする事なくコンパイルされたJavaのコード(クラスファイル)を様々な環境で実行可能にしてくれます。 JVMにはいくつ種類がありますが、本記事はOpen JDKで用いられるHotSpot VMの場合を想定しています。(他のJVMとの違いはわからない) ヒープ領域 Javaのプロセスを開始する

                                      JavaのGCの仕組みを整理する - Qiita
                                    • JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等) - ぺーぺーSEのブログ

                                      本ブログはJava8(特にMetaspace)に対応していない。 下記にJava8以降に対応した記事を記載する(予定)。 blog.pepese.com JavaVMのメモリ領域について JavaVMが管理するメモリ領域について 階層1 階層2 階層3 説明 Javaヒープ JavaVM上で起動するJavaプログラムのリソースを管理する領域。New領域とOld領域で構成される。 l" New領域 新規オブジェクトと閾値(-XX:MaxTenuringThreshold)未満のオブジェクトが配置される。(Young領域とも呼ばれる) l l" Eden領域 新規のオブジェクトが配置される。 l l" From領域 CopyGC(ScavengeGC、マイナーGC)が実行された際に、使用中のオブジェクトはここへコピーされる。(S0やS1とも呼ばれる) l lー To領域 CopyGC(Scav

                                        JavaVMのメモリ管理に関するまとめ(Javaヒープ、GC、ダンプ等) - ぺーぺーSEのブログ
                                      • Rubyコミッター・笹田耕一に世代別インクリメンタルGCを発想したプロセスを聞いてみた - エンジニアHub|Webエンジニアのキャリアを考える!

                                        Rubyコミッター・笹田耕一に世代別インクリメンタルGCを発想したプロセスを聞いてみた Rubyのフルタイムコミッターである笹田耕一さんに、Rubyの処理性能を向上させるいくつかのブレイクスルーをどのように解決し、どのような困難があったのかを聞きました。 直感的な文法や生産性の高さから、世界中の人々に愛されるオブジェクト指向スクリプト言語Ruby。その黎明期から現在に至るまで、大きな変化を遂げてきた要素があります。“処理速度”です。数々の最適化が行われた結果、Rubyの処理性能はかつてとは比べものにならないほど向上しました。 その改善を支えたのは、世界中のRubyコミッターたち。中でも、性能向上において多くの成果を残してきたのが、クックパッド株式会社でフルタイムRubyコミッターとして働く笹田耕一(ささだ・こういち/ @koichisasada )さんです。本稿では、彼がいかなる設計方針に

                                          Rubyコミッター・笹田耕一に世代別インクリメンタルGCを発想したプロセスを聞いてみた - エンジニアHub|Webエンジニアのキャリアを考える!
                                        • GoはいつGCするのか?

                                          TL;DR Go(のランタイム)は以下のタイミングで自動的にGCを実行する 前回のGC後に占有していたメモリと同量を新たに確保したとき 前回のGCから2分後 cgroupなどでメモリ制限しているときは、メモリ使用量が制限の50%以上になったらruntime.GC()を呼び手動でGCすべきである 前置き: GoとOOMのこれまで 以下はGo 1.16での調査結果です。Goのバージョンが異なった場合は事情が異なる可能性があります。 Goでプログラムを書く際に、使用メモリ量を気にしなければならないシーンはGCのおかげでそう多くはありません。実際それは間違いではないのですが、運用まで視野に入れるとそうは言ってられないことがあるのもまた現実です。昨今はコンテナの利用が当たり前になったことに伴い、OOMによりプロセスが強制的に終了させられることもあり、それを避けるために一定量以下のメモリで動くことが重

                                            GoはいつGCするのか?
                                          • Javaのプログラムはどうやって動いているの? GC編

                                            2015.04.24 JJUGナイトセミナ Javaのプログラムはどうやって動いているの? GC編Read less

                                              Javaのプログラムはどうやって動いているの? GC編
                                            • G1 GC おさらいと #jjug_ccc で発表した話 - unnamed

                                              この記事は Java Advent Calendar 2015 の一日目の記事です。二年連続でトップバッターだ! 先日の JJUG CCC 2015 Fall で G1 GC について話してきました。 去年の CMS GC と同じく結構遅めの時間帯&裏番組に伝説の灰色ページ管理人・ひしだま伝道師が発表するなどの豪華な時間帯にも関わらず、165人規模の部屋がいっぱいに埋まるぐらいの盛況でした。聴講頂いた皆様ありがとうございました! スライドは以下に公開しました。G1 GC の挙動から GC ログの読み方、どういうケースが厄介なのかを紹介しているので是非ご覧ください! Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6 from Yuji Kubota アフターフォロー、またはちょっとした補足 極力、後から参照可能なように資料

                                                G1 GC おさらいと #jjug_ccc で発表した話 - unnamed
                                              • 第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp

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

                                                  第5回 チューニングのために理解しておきたいGCの4つのアルゴリズム | gihyo.jp
                                                • C++ のヘッダファイルを #include するだけで使える GC 書いてみた - kazuhoのメモ置き場

                                                  そういえば C++ のヘッダファイルを #include するだけで使える GC を書きました。使い方は下のサンプルコードを見てもらえばいいとして、特徴としては、 ヘッダファイルを #include するだけで使える C++ の標準機能だけを使っているのでポータブル*1 mark-and-sweep, precise GC ってなあたりでしょうか。コードは GitHub - kazuho/picogc: a tiny, portable, precise, mark-and-sweep GC in C++ にあります。 C++ のプロジェクトで、ちょっとここだけは GC がほしいんだけど、ってなケースで使いやすいと思います。速度も、そこそこでるんじゃないかな*2。 というわけで、以下、サンプルコード。軽く説明しておくと、 GC を使うクラスは picogc::gc_object を継承する

                                                    C++ のヘッダファイルを #include するだけで使える GC 書いてみた - kazuhoのメモ置き場
                                                  • “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT

                                                    “Stop the World”を防ぐコンカレントGCとは?:現場から学ぶWebアプリ開発のトラブルハック(2)(1/2 ページ) 本連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) Full GC問題の時代が再び到来! それまで順調に動いていたはずのWebアプリケーションが、ある時突然、応答を返さなくなる。そして、運用者があたふたしている間に、何事もなかったかのように再び動き出す。 Javaで構築したシステムにかかわる者ならば誰しもが体験するであろう事象、そうFull GC(ガベージ・コレクション)だ。Full GCが行われている間、すべてのアプリケーションスレッドは停止する。この事象は“Stop the

                                                      “Stop the World”を防ぐコンカレントGCとは? (1/2) - @IT
                                                    • GoのGC (garbage collector)について理解する

                                                      プロトタイピングによる不確実性の低減 / Reducing Uncertainty through Prototyping

                                                        GoのGC (garbage collector)について理解する
                                                      • Ruby の NODE を GC から卒業させた - クックパッド開発者ブログ

                                                        こんにちは、技術部のフルタイム Ruby コミッタの遠藤(@mametter)です。メリークリスマス。 本日 Ruby 2.5.0 がリリース予定です。いろいろな改善が含まれています。クックパッドからの主な貢献としては、「trace 命令の削除による高速化」や「分岐・メソッドカバレッジの測定のサポート」などがあります。 ユーザから見える改善はいろいろと記事が出てくると思うので、この記事では、「抽象構文木のメモリ管理のリファクタリング」というあまりユーザから見えない改善を紹介してみます。 概要 Ruby のパーサは、NODE という内部的なオブジェクトで構成された抽象構文木を生成します。2.4 までの NODE は GC に管理される普通のオブジェクトでしたが、2.5 からは GC の外で管理するようになりました。これにより、3 つ嬉しいことがあります。 大きなコードのパースが速くなりました

                                                          Ruby の NODE を GC から卒業させた - クックパッド開発者ブログ
                                                        • OutOfMemoryエラー発生!? GCがあるのに、なぜ?

                                                          今回の概要 本稿ではWebアプリケーションの開発プロジェクトで実際に直面したメモリに関するトラブル事例の中からjava.lang.OutOfMemoryErrorを題材としたTipsを紹介する。 帰宅直前に、突然電話が鳴り響く 業務を終えて帰宅しようとしたとある夜、突然電話が鳴る。相手は社内のプロジェクトのマネージャである。 「現在、テストを実施しているが、数分経つとOutOfMemoryErrorが発生してアプリケーションが落ちてしまう。再起動を掛けると、また順調に動くが、しばらく利用していると、同じようにOutOfMemoryErrorが発生する。メモリ不足のエラーなので、物理メモリを増やそうかと思っているが、物理メモリ増設の前に、アプリケーションという観点からメモリ不足を引き起こす問題がないか調査してほしい」 取りあえず、原因を探るために現場に急行した。 現場にてトラブルの詳細をヒア

                                                            OutOfMemoryエラー発生!? GCがあるのに、なぜ?
                                                          • Golangの新しいGCアルゴリズム Transaction Oriented Collector(TOC)

                                                            http://golang.org/s/gctoc Goの新しいGCのProposalが出た.まだProposal段階であり具体的な実装はないが簡単にどのようなものであるかをまとめておく. GoのGCはGo1.5において単純なStop The World(STW)からConcurrent Mark & Sweepへと変更され大きな改善があった(詳しくは“GolangのGCを追う”に書いた).先の記事に書いたようにGo1.5におけるGCの改善は主にレイテンシ(最大停止時間)に重きが置かれいた.数値目標として10msが掲げられGo1.6においては大きなヒープサイズ(500GB)においてそれを達成していた. GCの評価項目はレイテンシのみではない.スループットやヒープの使用効率(断片化の対処)なども重要である.Go1.6までのGCではそれらについて大きく言及されていなかった(と思う).例えばスル

                                                            • 第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
                                                              • 「Java SE 6完全攻略」Garbage First GC

                                                                Javaがヒープの管理にGCを使用しているのは、読者の皆さんもご存じの通りです。GCの手法にはいろいろありますが、HotSpot VMが採用しているのが世代別GCです。今回は、世代別GCの概要と問題点を解説したうえで、これを解決するために導入されたGarbage First GCについて説明します。 世代別GCの概要と問題点 世代別GCは若いインスタンスと時間を経たインスタンスを別々の領域に配置し、管理する手法です。これは寿命の短いインスタンスほど多いという性質をベースにしています。 若いインスタンスが配置される領域をヤング領域、時間を経たインスタンスを配置する領域をオールド領域とよび、それぞれの領域で異なるGCの手法を使用します。つまり、ヤングとオールドという世代の異なる領域を、それぞれ異なるGCで管理するのが世代別GCというわけです。 ヤング領域には高速ですが漏れのあるGCを用います。

                                                                  「Java SE 6完全攻略」Garbage First GC
                                                                • 福島原発事故-簡潔で正確な解説 2011/3/13 Barry Brook 投稿 (http://bit.ly/gc9jeH) 2011/3/14 山中翔太訳。この記事は Barry Brook 様のご厚意により日本語に訳させていただきました。 誤訳情報は twitter の��

                                                                  福島原発事故-簡潔で正確な解説 2011/3/13 Barry Brook 投稿 (http://bit.ly/gc9jeH) 2011/3/14 山中翔太訳。この記事は Barry Brook 様のご厚意により日本語に訳させていただきました。 誤訳情報は twitter のアカウント (@shotayam) へ。意訳しており多少原文と意味が違うところがあります のでご注意を。目に余るミスがある場合ご連絡を。 ここ数日、あまりにも原発報道が加熱しているところがあると感じており、専門的で客観的な意見が欠 如していたように感じます。そのとき RT で流れて来た記事がこれでした。この記事は専門的な知識を使い 解説していてかなり長い文章ですが、かなりわかりやすく読みやすい文章です (訳が下手なのは本当に申し 訳ないです)。これをきっかけに、数名でもいいので、宮城で起こっていることに関して少しでも

                                                                  • PHP の GC の話

                                                                    第 87 回 PHP 勉強会での発表資料です。PHP の処理系に採用されている参照カウント方式の GC と循環参照を回収するアルゴリズムについて簡単に説明します。また、特定の限られた状況で循環参照の回収が処理速度に悪影響を与えることを、簡単なサンプルプログラムを用いて示します。Read less

                                                                      PHP の GC の話
                                                                    • (翻訳) Ruby 2.2 のシンボル GC - FIVETEESIXONE

                                                                      Ruby 2.2 の新機能にシンボル GC というものがあります。 正直、「え、シンボルって GC されないから速いんじゃないの?なのにシンボル GC で Rails が速くなるとか話聞くけど、いったいどういうことなの?」という感じでサッパリ理解できてなかったのですが、その辺りの疑問に対してまとめられている記事がありました。 Symbol GC in Ruby 2.2 とても分かりやすく素晴らしい記事だと感じたので、許可をもらって以下に日本語訳を公開します。 Symbol GC in Ruby 2.2 シンボル GC ってなに?それって気にしなくちゃいけないことなの? リリースされたばかりの Ruby 2.2 の大きな新機能として「インクリメンタル GC」が挙げられますが、もう1つの注目すべき新機能が、この「シンボル GC」 です。 もしあなたがこれまで Ruby の世界で過ごしてきたのな

                                                                        (翻訳) Ruby 2.2 のシンボル GC - FIVETEESIXONE
                                                                      • 徹底解剖「G1GC」 アルゴリズム編

                                                                        書誌情報 著者: 中村成洋 発行日: 2011-06-27 最終更新日: 2012-02-03 バージョン: 1.0.0 ページ数: 62ページ(A4PDF版換算) 対応フォーマット: EPUB, PDF 出版社: 達人出版会 対象読者 高度なGCのアルゴリズムに興味のある方。すでに『ガベージコレクションのアルゴリズムと実装』を読まれていて、続きを読みたい方 著者について 中村成洋 中村成洋(nari)はネットワーク応用通信研究所に勤めているRubyistです。仕事ではRailsを使ってWebアプリケーションを開発しています。高校を卒業してからはアイス工場に2年半いて、それからプログラマに転職しました。 GCに魅了されてしまった人間で、GC歴は4年になります。CRubyのコミッタとして1年に1度のペースでGCの改善に取り組んでいます。去年はCRubyに新しく取り込まれたLazySweepG

                                                                          徹底解剖「G1GC」 アルゴリズム編
                                                                        • ガーベジ・コレクション:GC ( Garbage Collection ) についての簡単な説明と調査方法

                                                                          Java の GC について簡単に説明いたします。 GC はヒープやヒープサイズと密接な関連があります。以下のページも合わせて参照ください。 「Java のヒープサイズ」についての簡単な説明 Java プログラムが動作するとオブジェクトはメモリ上にロードされます。 大きなオブジェクトを使用したり、また、使用するオブジェクトの数が多ければ、その分メモリの使用領域は増加します。 そのまま、新しいオブジェクトをロードし続けると、Java が使用できるメモリ領域がメモリが一杯になります。 * 「 Java が使用できるメモリ領域 」、これをヒープ領域と言います。( ヒープ領域以外にも Permanent 領域が存在します。) メモリが一杯になると新しいオブジェクトをロードできず、プログラムを実行することができなくなります。 このような状態を回避するための仕組みが ガーベジ・コレクショ

                                                                          • Ruby 2.1.1 GC Tuning - Qiita

                                                                            Help us understand the problem. What is going on with this article? Ruby2.1では、RGenGCによりかなりパフォーマンスが改善されている。 また、チューニングパラメータが増えているが、まとまった日本語の解説が無かったので書いてみた。 間違いがある可能性があるので、指摘は歓迎です。 RGenGCとは RGenGC(Restricted Generational Garbage Collection)については、まずはこれを読むべし www.atdot.net/~ko1/activities/rubyconf2013-ko1_pub.pdf www.atdot.net/~ko1/activities/2014_rubyconf_ph_pub.pdf Ruby 2.1: RGenGC · computer talk by

                                                                              Ruby 2.1.1 GC Tuning - Qiita
                                                                            • 徹底解剖「G1GC」実装編(β版)

                                                                              本書はOpenJDK7のG1GCの実装と、それに関連する技術を解説します。 目次 スポンサーのみなさま はじめに 1.準備 2.オブジェクト管理機能 3.アロケータ 4.ヒープ構造 5.オブジェクト構造 6.HotspotVMのスレッド管理 7.スレッドの排他制御 8.GCスレッド(並列編) 9.GCスレッド(並行編) 10.並行マーキング 11.退避 12.予測とスケジューリング 13.正確なGCへの道 14.ライトバリアのコスト さらに勉強したい人へ その他参考文献 以下から(ある時点で)最新のebookをダウンロードできます。 徹底解剖「G1GC」実装編-20120915.epub 徹底解剖「G1GC」実装編-20120914.mobi 徹底解剖「G1GC」実装編-20120914.pdf 謝辞 本書はスポンサーのみなさまの金銭的支援によって執筆されました。 スポンサーのみなさま あ

                                                                              • JavaのGC頻度に惑わされた年末年始の苦いメモリ

                                                                                JavaのGC頻度に惑わされた年末年始の苦いメモリ:現場から学ぶWebアプリ開発のトラブルハック(9)(1/3 ページ) 本連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) Java言語を利用するようになって、システムを開発するうえで楽になった要素は何かというアンケートがあったとき、読者の皆さんならどのように回答するだろうか。私は迷わず、「メモリ管理」と回答する。 同時に、Javaを利用してシステム開発を行う際に、注意していること、悩まされたことは何かとアンケートがあれば、「GC(ガベージ・コレクション)」と回答するだろう。 多くのシステム開発の現場では、いまこの瞬間も、JavaのGCの挙動に悩まされ、GC

                                                                                  JavaのGC頻度に惑わされた年末年始の苦いメモリ
                                                                                • GC版『ゼルダの伝説 風のタクト』タイムアタック研究で大きな一歩。17年にわたり不可能だった“バリアスキップ”が「メモリの魔法」によって達成される

                                                                                  『ゼルダの伝説 風のタクト』には、タイムアタックに挑むスピードランナーたちの挑戦を阻み続けてきた大きな壁が存在する。 それはラストダンジョンであるガノン城までの道を繋ぐ橋にある大きな結界だ。プレイヤーに「バリア」と呼ばれて親しまれているこの結界は、通常のストーリーを進めて消失させない限り、けっしてその先へ通ることができないように設計されている。 (画像は筆者作成のTwitchクリップより) 『ゼルダの伝説 風のタクト』のタイムアタックにおいては、多くのテクニックを駆使すればゲームを始めてから比較的早い段階でこのバリアがある場所まで来ることができる。そのため、このバリアを正規の方法以外で突破できるかどうかが、長年の課題とされてきた。そして、いつしかこのバリアを突破することを“バリアスキップ”と呼ぶようになった。 2012年にWii Uで発売されたリメイク版『ゼルダの伝説 風のタクト HD』で

                                                                                    GC版『ゼルダの伝説 風のタクト』タイムアタック研究で大きな一歩。17年にわたり不可能だった“バリアスキップ”が「メモリの魔法」によって達成される