タグ

GCに関するatsushifxのブックマーク (4)

  • Netty 4がTwitterのGCオーバーヘッドを1/5に削減

    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が最近リリースされ、重要な変...

    Netty 4がTwitterのGCオーバーヘッドを1/5に削減
    atsushifx
    atsushifx 2013/11/13
    Netty4ではGCを改善することでスピードの大幅アップを図った。イベントオブジェクト生成をNetty側のAPIで処理し、さらにNetty側でアロケーションとGCを行うこともできるようにした
  • RubyとPythonの違いからガベージコレクタを理解する - ワザノバ | wazanova.jp

    http://patshaughnessy.net/2013/10/24/visualizing-garbage-collection-in-ruby-and-python Pat Shaughnessyが、ブタペストで開催されたRUPY2013でのプレゼンの前半を自らのブログで紹介しています。 ガベージコレクタは、「ゴミを集める」という行為だけでなく、「新しいオブジェクトのためにメモリをあてがう。」「不要なオブジェクトを見つける」「不要なオブジェクトからメモリを取り戻す。」という、人間の心臓が血液を浄化するような働きをしている。 この簡単なコードサンプルを見ると、RubyPythonの記述はよく似ているが、それぞれの言語の内部でのインプリの仕組みは違う。 1) Rubyのメモリ Rubyは、コードが実行される前に、数千のオブジェクトを先につくり、それをリンクされたfree listに置

    atsushifx
    atsushifx 2013/10/28
    GCの基本アルゴリズムは3つ。Mark&Sweep,Copy,Reference Count。RubyはMark&Sweepなので確実だけどプログラムが長期間停止する。Pythonはカウントの増減を間違えるとメモリーリークが残る。次世代GCはリアルタイムと世代間管理の組み合
  • [Android編]短命なオブジェクトを作ってはいけない

    Android上のアプリケーションはJava言語で開発できるが、PCやサーバー向けのJava仮想マシンとは異なる「Dalvik仮想マシン」上で動作する。Dalvik仮想マシンは、モバイル向けに特化されているのが特徴である。 Androidアプリケーションの開発では、Javaの開発現場で培ってきた資産やノウハウを生かすことができる。だが、基的にPC上で動作させるJavaアプリケーションと同様に考えてしまうと、思わぬ落とし穴に陥ることになる。 そこで、主にメモリー管理の面からJava仮想マシンとDalvik仮想マシンの違いを見ていくことにする。 両者とも、メモリー管理はガベージコレクタ(GC)が担当する。ヒープ領域に空きがない場合、不必要なオブジェクトを回収して空き領域を作るのがGCの役割である。Java仮想マシンでは「世代別GC」という方式を採用しているが、Dalvik仮想マシンは「マーク

    [Android編]短命なオブジェクトを作ってはいけない
    atsushifx
    atsushifx 2010/08/25
    DalvikでのGCはマーク&スイープしかないので、メモリ管理は気をつけないといけないという話
  • ガベージコレクション

    Ruby には使われなくなったメモリを自動的に検出し解放してくれる ガベージコレクションの機能がある。 この節ではこのガベージコレクションの詳細を追ってゆく。 オブジェクトの管理 Ruby の GC は Ruby のオブジェクトのみが対象だ。かつ、Ruby が 生成し管理しているメモリにないといけない。逆に言うとユーザが勝手に 割りあてたメモリまでは面倒をみてくれないということだ。たとえば 以下の関数はメモリリークを起こす。 void koreha_dame() { malloc(1024); /* メモリをもらっては捨てる */ } 一方で以下の関数はメモリリークを起こさない。 void daijoubu() { rb_ary_new(); /* Ruby の配列を作っては捨てる */ } Ruby のオブジェクトはようするに struct RVALUE だったから、オブ ジェクトの管理

    atsushifx
    atsushifx 2008/12/14
    Rubyにおけるgcの実装。基本はリファレンスカウントでいいのかな
  • 1