タグ

gcとGCに関するmainyaaのブックマーク (15)

  • Go言語の低レイテンシGC実現のための取り組み | POSTD

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

    Go言語の低レイテンシGC実現のための取り組み | POSTD
  • Goのガーベジコレクタを視覚化するツール | POSTD

    (環境変数GODEBUGは、 ランタイム パッケージで提供されています) この環境変数を指定してプログラムを起動すると、標準出力に以下の追加出力が出力されます(少し簡略化されています)。 % env GODEBUG=gctrace=1 godoc -http=:6060 ... gc76(1): 2+1+1390+1 us, 1 -> 3 MB, 16397 (1015746-999349) objects, 1436/1/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields gc77(1): 2+0+1582+1 us, 2 -> 4 MB, 14623 (1016248-1001625) objects, 1436/0/0 sweeps, 0(0) handoff, 0(0) steal, 0/0/0 yields scvg0: inuse:

    Goのガーベジコレクタを視覚化するツール | POSTD
  • 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
    mainyaa
    mainyaa 2014/04/10
    " いわゆるサーバ系ソフトウェアを運用する場合には、UseConcMarkSweepGCを付与して停止時間の短いCMS GCを使う。 "
  • JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする - oinume journal

    English version JVMでGCのログ出すじゃないですか。んで、その時↓みたいに -XX:+PrintGCTimeStamps っていうオプションを指定するじゃないですか。 TODAY=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=256m \ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC \ -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=85 \ -verbose:gc -Xloggc:/usr/local/tomcat/lo

    JVMのGCのログを-XX:+PrintGCDateStampsでhuman readableにする - oinume journal
  • java.lang.ref パッケージの利用方法(SoftReference/WeakReference/PhantomReference) : Java Programming Tips

    【概要】 SoftReference/WeakReference/PhantomReference が含まれる java.lang.ref は JDK1.2 の頃に導入されたパッケージであるが、昔から用意されている API の割にあまり使われていない。このパッケージを利用するとプログラムからガーベージコレクタとの対話を可能になるため、開発の中でヒープの動作をプログラム的に調整したい場合には便利である。 【キーワード】 リファレンス、reference、java.lang.ref、SoftReference、WeakReference、PhantomReference、ReferenceQueue、ガーベージコレクション、ガーベージコレクタ、GC、Garbage Collection、Garbage Collector 1. 参照オブジェクトの種類 (1) ソフト参照(SoftReferen

    java.lang.ref パッケージの利用方法(SoftReference/WeakReference/PhantomReference) : Java Programming Tips
  • Java弱参照メモ(Hishidama's Java Weak reference Memo)

    Java弱参照クラス 通常のインスタンスは、どこかの変数が保持(参照)していれば、GCの対象にならない。 しかし弱参照にして保持すると、他の通常の参照が全て無くなれば、GCの対象になる。 (弱参照という用語を使う場合は、通常の参照は「強参照」と呼ぶ。強参照と弱参照の間に当たるソフト参照、弱参照より下のファントム参照というのもあるらしい) WeakHashMap WeakHashMapは、キーを弱参照で保持するHashMap。 このマップのキーに当たるオブジェクトの(他からの)強参照が全て無くなると、このマップ内からそのキー(と値)が削除される。 例: Map<Integer, String> map = new WeakHashMap<Integer, String>(); // キーを強参照で保持しつつ、マップに値をセット Integer[] force = new Integer[10

  • Rubyによる本気のGC - Narihiro Nakamura - Rabbit Slide Show

    Description なぜあなたはCでGCを書くのですか? 当はRubyで書きたいですよね? この 発表では(J)RubyでGCを書く方法を示します。ToyのGCじゃなくて、気のGCを Rubyで書けます!(の予定) Page: 1 Rubyによる気の GC Serious GC with Ruby @nari3 #sprk2012 2012/9/15 ネットワーク応用通信研究所 Rubyによる気のGC - Serious GC with Ruby Powered by Rabbit 2.0.5

    Rubyによる本気のGC - Narihiro Nakamura - Rabbit Slide Show
  • PythonのGCについて

    PythonのGarbageCollection 原文 Neil Schemenauer (翻訳:中村 成洋) ポータブルなGarbageCollection 概要 循環参照はリスト,タプル,インスタンス,クラス,辞書,関数に伴って見つかります. インスタンスの __del__ メソッドは正常に取り扱われます. 新しいタイプをGCの対象に追加するのは簡単です. このGCが有効なPythonは,通常のPythonとバイナリ互換です. 世代別GCが動いています(今は三世代).このオーバヘッドをpybenchで測ったら,大体4%くらい占めていました. 実質的に,すべての拡張モジュールは,不変に(私は,標準的な配布において 新しいものとcPickleを修正しなければなりませんでした)ならなければなりま せん.gcと呼ばれている新しいモジュールは,コレクターを調整して,デバッ ギングオプションをセッ

  • Python Tips

    このページは Python 2.3 くらいのときに書かれたものです。 内包表記とλ式 >>> fs = [ lambda: i for i in range(8) ] >>> fs[2]() 7 各 i ごとにクロージャが生成されるのではなく、ひとつのクロージャで i の値が書き換えられるため、このような結果になる。これは期待した動作ではないと思う。 同じ問題は for ループでも起こる。 >>> for i in range(8): ... fs.append( lambda: i ) ... >>> fs[2]() 7 これは、デフォルト引数をうまく使えば回避できる。 >>> fs = [ lambda i=i: i for i in range(8) ] >>> fs[2]() 2 デフォルト引数 これは Tutorial にも載っているけど。 >>> def f(xs = []):

  • Rubyでガベレージコレクションの設定をチューニングしてみた - さかなチキンぱん。

    ブログを移した為記事を削除しました。 新しいページへどうぞ

    Rubyでガベレージコレクションの設定をチューニングしてみた - さかなチキンぱん。
  • 『徹底解剖「G1GC」 アルゴリズム編』β版を公開しました&とっても売れています! - 達人出版会日記

    長らくお待たせいたしましたが、@nari3こと中村成洋さんによる、『徹底解剖「G1GC」 アルゴリズム編』のβ版発売を開始しました。 『徹底解剖「G1GC」 アルゴリズム編』 著者のnariさんのサイトにも、関連したエントリがあるので合わせてお読みください。 『徹底解剖「G1GC」 アルゴリズム編』発売!! 『地獄のGCスピンオフ』 - 名古屋Reject会議02 nariさんの日記にも触れられていますが、このは600円に設定してあります。もともと実装編と合わせて1000円で想定していたものが、半分になったので、500円か600円くらいで……ということから600円になったのですが、確かにこれ一冊だけで1000円にしても良かったかもしれない、という気持ちもないわけではありませんでした。 が、実際にフタを開けてみると、これまで販売してきた中でもよく売れている『はじめる! Cucumber』

    『徹底解剖「G1GC」 アルゴリズム編』β版を公開しました&とっても売れています! - 達人出版会日記
  • TerracottaのBigMemory - 技術ブログ読み日記

    POJO Mojo の「BigMemory Explained a bit...」を読みました。 BigMemoryとはTerracotta社が開発した、Javaで文字通り巨大なメモリを扱うための技術です。 大容量メモリ使用時のガベージコレクション JVMのヒープサイズが大きいと、ガベージコレクションの停止時間が非常に長くなります。ある巨大電話会社では、ヒープサイズが48GBのときはJVMが5分以上止まることがあり、2GB×80JVM に分割するようにアプリケーションを書き直したそうです。 どのようにしてGCを回避するか BigMemoryを使うと、JVMのオプションで -Xms に500MBを指定すれば、100GBのメモリを使っていても500MBしかGCの対象にならないのだと言います。しかも、Pure Javaで書かれているそうです。 そのカラクリは、 「BigMemory: Off-h

    TerracottaのBigMemory - 技術ブログ読み日記
  • Some more advanced GC techniques

    After my last two posts about garbage collection, some people people suggested some more advanced techniques be used to solve the pausing problem. Here's a quick* overview of some more advanced techniques, some of which can eliminate noticeable pauses and some of which can solve other problems in GC. The train algorithm The idea of the train algorithm is to break the heap (or, really, just the old

  • 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(ウィキ)
    mainyaa
    mainyaa 2008/01/17
    ガーベジコレクションのアルゴリズム
  • akihiro kamijo: Flash Player 9 のガーベジコレクション

    Flash/Flex のアプリケーションを開発していると (たまには) メモリリークとか気になることもあるかと思います。今回は Flash Player 9 のガーベジコレクションについてです。詳細な実装レベルだと、Flash Player のアップデート時に、ガーベジコレクション周りでも多少の変更が行われたりしていますが、いまのところ基的なモデルは変わっていません。今回はこの ”基的なモデル” を紹介します。 Flash Player 8 以前は少し違ったモデルになっています。以下の記述内では Flash Player とあったら Flash Player 9 のことだと思ってください。 Flash Player のメモリ確保 Flash Player のメモリ確保時の動作は特にユニークなものではありません。が、話の基になるのでとりあえず以下概要です。 メモリの確保は負荷の高い部

    mainyaa
    mainyaa 2007/05/25
    覚えておこう。
  • 1