タグ

gcに関するtyruのブックマーク (31)

  • goで書いたコードがヒープ割り当てになるかを確認する方法 · hnakamur's blog

    2018-01-30 はじめに Allocation Efficiency in High-Performance Go Services · Segment Blog という記事を読みました。素晴らしいのでぜひ一読をお勧めします。 この記事は自分の理解と実際に試してみた結果のメモです。 一番のポイントは go build -gcflags '-m' のようにオプションを指定してビルドすればコードのどの箇所でヒープ割り当てが発生したかを確認できるということです。 pprof や go test -benchmem でもヒープ割り当ての発生回数は確認できますが、上の方法ではコードのどこ(何行目の何カラム目)でヒープ割り当てが発生したかとなぜ発生したかの理由を確認できます。 元記事の内容メモ 冒頭にあげた記事を読んで私が理解した内容のメモです。 元記事の全ての内容を書いているわけでないので、元

    tyru
    tyru 2018/02/02
    気にしだすとキリなさそうだけど一応知っておきたい
  • write barrier - NyaRuRuが地球にいたころ

    9 Generational GC (中略) さて、Schemeにおいて、ユーザプログラムがconsやvectorのみを用いる限り、旧→新のポインタは決して生まれない。 Set-car!などの破壊的代入を行なって初めて生じるものである。コンパイラが、破壊的代入の際に必ずGCに知らせる(書き換えられるオブジェクトを GCに教える)ようにすれば、GCが旧→新のポインタ全てを手早く見つけることができる。このように、メモリオブジェクトへの書き込みの際に特別な処理を行なう機構をwrite barrierという(注)。 (中略) 10 Incremental GC (中略) Generational GCと同様に、write barrierが必要になる (ここではmark and sweepを仮定する)。 Write barrierがないと破綻する例を図8に示す。マークフェイズの途中でaが黒になった時

    write barrier - NyaRuRuが地球にいたころ
  • Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    Javaはどのように動くのか~図解でわかるJVMの仕組み 記事一覧 | gihyo.jp
    tyru
    tyru 2016/09/23
  • JDK8からあるちょっと嬉しいGCログオプション - n-agetsumaの日記

    JDK8およびJDK8u20では、GCログに関連する2つの便利な機能が追加されている。いずれの機能も2014/8現在最新のJDK7 update 67 には含まれていないが、JDK7u80にてバックポートされる予定。 GCログにpidと日付を含める (JDK8より) JAVA_OPTS="$JAVA_OPTS -Xloggc:/var/log/wildfly/gc_%p_%t.log" => 実際のファイル名例 : gc_pid31455_2014-08-31_14-20-16.log.0GCログのフォーマットに%pを入れるとpid形式のプロセスIDが付与される。また%tを付与すると"_2014-08-31_14-20-16"のようにGCログファイルを作成した日付時分秒が追加される。かつてGCログはJavaを再起動すると同じファイルが上書きされて消えてしまうため、出力先を-Xloggc:g

    JDK8からあるちょっと嬉しいGCログオプション - n-agetsumaの日記
    tyru
    tyru 2014/09/01
  • いちばんいいのを頼む - GC Advent Calendar - I am Cruby!

    Garbage Collection Advent Calendarの14日目の記事です。 yaottiさんの記事が楽しかったのでもう少し頑張ります! 一人Advent Calendar [advent-calendar, gc] Garbage Collection Advent Calendar 2012 bit.ly/RoGUCN— tyruさん (@tyru) 12月 12, 2012 ひとりで…やるつもりは…ないんですが…(´;ω;`)ウッ… みなさんの参加をおまちしております。 さて、HotspotVMみたく、GCをたくさーん実装しているような場合は、もうどのGCを選んでいいかわからないですよね。 もしもアプリケーションに適したよさげなGCを勝手に選んでくれたら…(ぽわ〜ん)。 そこで機械学習の出番ですよ! Intelligent selection of applicatio

    tyru
    tyru 2012/12/14
    すみません!よく見てなくてid:authorNariさん一人でやるのかと勘違いしてましたwww
  • Garbage Collection Advent Calendar 2012 - Adventar

    Garbage Collectionにかんすることならなんでも!

    Garbage Collection Advent Calendar 2012 - Adventar
    tyru
    tyru 2012/12/12
    一人Advent Calendar
  • 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チューニングとそれにまつわるトラブル対応手順まとめ - 日記のような何か
  • hClippr編集室ブログ

  • GC in C++0x [eng]

  • われわれは、GCをX倍遅くできる

    1. われわれは、GCをX 倍遅くできる We can make the GC X times slower than the original nari/中村 成洋 ネットワーク応用通信研究所 われわれは、GCをX倍遅くできる - We can make the GC X times slower than the original Powered by Rabbit 0.6.5 5. 自己紹介 ✓ nari/中村 成洋 ✓ @nari3, id:authorNari ✓ NaCl勤務 4/221 われわれは、GCをX倍遅くできる - We can make the GC X times slower than the original Powered by Rabbit 0.6.5 6. 自己紹介 ✓ CRubyコミッタ ✓ 主にGCについて考える ✓ 「俺がGCだ」 (こうですか、わ

    われわれは、GCをX倍遅くできる
  • GC on C++

    でちまるさん(実際かわいい) @decimalbloat コンパクションをC++でやるには色々障害がある(GCがオブジェクトをコピーする方法を知っていないといけない、オブジェクトがコピーされたとき、コピー前のアドレス全てをコピー後のアドレスへと書き換えないといけない)けど、GCのためのメモリ消費を抑えつつこれらのことができるのだろうか… 2010-08-04 13:36:31

    GC on C++
  • 増刷について - I am Cruby!

    GC拙著「ガベージコレクションのアルゴリズムと実装」が増刷されたようです(もう流通にのっているらしいです)。これもみなさまの応援のお陰です。ありがとうございますm(_ _)m# しかし、このようなマニアックが売れるとは、、日の未来は明るいですね!!ガベージコレクションのアルゴリズムと実装作者: 中村成洋,相川光,竹内郁雄出版社/メーカー: 秀和システム発売日: 2010/03/18メディア: 単行購入: 16人 クリック: 586回この商品を含むブログ (30件) を見るAmazonに今のところ在庫が入っているようです。が、またいつ売り切れるか分かりませんので、Amazonでのお買い求めはお早めに。 また、正誤表もあわせて更新しました。ご確認いただければと思います。ガベージコレクションのアルゴリズムと実装|サポート|秀和システムほとんどの間違いは第2刷に反映しておりますが、時期的に

    tyru
    tyru 2010/04/22
    ポチった
  • 「ガベージコレクションのアルゴリズムと実装」がAmazonで予約可能に! - I am Cruby!

    gcbook, GCガベージコレクションのアルゴリズムと実装作者: 中村成洋,相川光,竹内郁雄出版社/メーカー: 秀和システム発売日: 2010/03/18メディア: 単行クリック: 218回この商品を含むブログ (3件) を見るどうやら予約可能になったようです。どうぞよろしくお願いいたしますm(_ _)m # 注:なお、上部のリンクは私のあさましリンクとなっています。# このリンク経由で買っていただくと、そのお金を買ったりして、豪遊する予定です!!(キリッ

  • メモリ破壊の現場を見つけるTips - I am Cruby!

    RubyAdventJP, GC, Ruby(この記事はRuby Advent Calendar jp: 2009 : ATNDの4日目です。前日はmrknさんでした) 健全なるRubyistであれば、RubyのGCをいじることが週に一度はあるでしょう。そのときに困るのが、GCをいじってしまったことによるバグの修正です。GCをいじるというのは想像以上に難しく、少しでも書き間違えるとメモリ破壊が発生します。そのときに使えるTipsをこの記事で書くことにします。 みなさんご存じの通り、メモリ破壊というのは原因を特定するのが困難です。これは問題が発覚する場所とメモリ破壊が起こった現場が位置的に遠いことに起因しています。偉大なるハッカーのまつもとさんですら、その発見は困難です。 [ruby-dev:38628] Re: [BUG: trunk] called on terminated objec

  • 習作GCライブラリ(1) exact copying gc - hogelogの日記

    習作として単純なGCライブラリを実装してみました。とりあえず面倒だったのでヒープとスタックのサイズは固定長。 githubを使って公開してみる http://github.com/hogelog/copying_gc/tree/master こんな感じで使う。 static Memory *memory; void test_01() { Object iv, fv, str, pair; int i; for (i=0;i<2000;++i) { fixed_memory_push(memory, iv = new_ivalue(memory, i)); printf("%p: %ld\n", iv, IVALUE(iv)); fixed_memory_push(memory, fv = new_fvalue(memory, (double)i)); printf("%p: %f\n",

    習作GCライブラリ(1) exact copying gc - hogelogの日記
  • Garbage Collection for Python

    Portable Garbage Collection Summary Reference cycles involving lists, tuples, instances, classes, dictionaries, and functions are found. Instances with __del__ methods are handled in a sane way. It is easy to add GC support to new types. GC enabled Python is binary compatible with regular Python. Generational collection works (currently three generations). The overhead measured by pybench is about

    tyru
    tyru 2009/10/29
  • .NET TIPS ガベージ・コレクタを明示的に動作させるには? - C# VB.NET - @IT

    C++やVisual Basic 6.0の世界でプログラミングしてきた技術者が.NET Frameworkの世界に入ってきてまずおどろくのは、プログラムを実行していると、プロセスが使用するメモリ量がどんどん増えていくことである。「メモリ・リークか!?」と焦ることもあるが、これは正常な動作である。 メモリの解放忘れは典型的なバグの要因であり、メモリ解放を自動化することによって、プログラムの信頼性は向上し、プログラマーの負担も減る。自動的なメモリ解放を行う機構は、ガベージ・コレクタと呼ばれ、解放する行為をガベージ・コレクションと呼ぶ。問題は、ガベージ・コレクションがいつ行われるかであるが、これはメモリが不足してきた場合や、明示的に動作を指示された場合にのみ行われる。つまり、メモリが潤沢に余っている場合には、プロセスの使用するメモリ量が増加するのが正常な動作である。そのままメモリ不足でプログラム

    tyru
    tyru 2009/10/27
  • ガベージコレクション - OCamlチュートリアル

    ガベージコレクション、参照カウント、明示的確保 現代的言語がすべてそうであるように、 OCaml にはガベージコレクタ(GC)があるので、 C/C++ のようなメモリの確保と開放を明示する必要はない。 JWZ が "Java sucks" で吐き捨てているのだが: 最初に、良い点: Javaには、free() がない。 これだけはきちんと認めなければならない、だが他は全部あぶく銭だ。 この一点があるおかげで、他の全てがどんなにひどくても 許してしまえるのです。 この一点さえあれば、このドキュメントの他の全てのことは 色褪せてしまう。だが... OCaml のガベージコレクタは、現代的なハイブリッドの 世代別/インクリメンタル コレクタであり、 大抵の場合、手作業のアロケートよりも優れている。 Java GC (GC に悪名をあたえてしまった)とは違い、 OCaml GC は実行開始時には、

    tyru
    tyru 2009/10/26
  • GC FAQ -- draft

    GC FAQ -- draft This is a draft FAQ for the GC-LIST. Comments, editorial remarks, and especially additions are welcome. The file is currently broken up into three parts, corresponding roughly to general stuff, techniques and algorithms, language interfaces to GC, and more difficult topics. As sections grow, these files may be reorganized in an attempt to keep the individual files small enough to b

  • conservativeなGC - やねうらおブログ(移転しました)

    BoehmのGCは保守的(conservative)なGCである。これは、root集合から辿れるならば、配列の中身すべての要素を辿ることを意味する。画像imageのように大きな配列を扱う場合、こんなことをされてはたまらない。配列の要素がでたらめな数字だと、そんなところを辿ってアクセス違反にならないの?と思うかも知れないが、GCは自分のヒープから割り当てたメモリしか辿らないので、アクセス違反は起きない。 そこで、D言語の場合、大きな配列はGCのヒープからではなく他のallocator(たとえばmallocで)からメモリを割り当てるのが常套手段となっている。他のallocatorから割り当てたメモリはGCのヒープから割り当てたものではないので、GCはその先をスキャンすることをあきらめるからである。 まあ、どのみちアプリケーションが肥大化してきたときに保守的なGCではどうしようもいかなくなる。保

    conservativeなGC - やねうらおブログ(移転しました)
    tyru
    tyru 2009/10/24