タグ

gcに関するd_animal141のブックマーク (6)

  • メモリ管理 - コンピュータの基礎知識 | ++C++; // 未確認飛行 C

    概要 「仮想メモリ」があるからと言って、場当たり的にメモリ領域を使っていいわけではありません。 メモリ上の空き領域を効率的に管理するのもオペレーティング・システムやフレームワークの仕事です。 メモリ領域の管理手法には大きく分けて、スタックとヒープという2種類のものがあります。 スタック スタック(stack)とは、「積み上げる」、「堆積物」というような意味ですが、 その言葉通り、データ領域を積み上げていくような形で管理する方式です。 すなわち、最後に確保した領域を最初に開放します(上に積んで、上から降ろす)。 スタックによるメモリ管理の模式図を図1に示します。 プログラムで使うデータの多くは、あらかじめ決まっている短い範囲でのみ利用されます。 データの利用される範囲のことをスコープ(scope)と呼びます。 図中に示すように、一般に、スコープは入れ子になっていて、内側のスコープで使うデータ

    メモリ管理 - コンピュータの基礎知識 | ++C++; // 未確認飛行 C
  • Linuxでメモリ使用量が増えがちな際に見直したい環境変数|Roy

    先日、とあるコードで何故か使用メモリが増え続けるという事象に遭遇したので、その時有効だった方法を紹介します。 尚、おそらくLinux環境でglibcを使っている場合のみ関係すると思われます。 当てはまりそうな状況・Linux、glibc環境で動作している(Dockerで動かしている場合などはベースイメージに注意) ・沢山処理をしている ・数MB-数十MB程度のオブジェクトを大量に作ったり削除したりする実証コード これを実行した結果がこちら。 1 ❯ python increase_memory_usage.py start rss: 111396 malloc(current, peak): (12935, 64753) 0 rss: 427204 malloc(current, peak): (5923339, 725231273) 1 rss: 748164 malloc(curren

    Linuxでメモリ使用量が増えがちな際に見直したい環境変数|Roy
  • ruby - Rubyのプロセスが掴んでいる実メモリを解放する手段はありますか? - スタック・オーバーフロー

    Rubyのスクリプトが一度でも巨大なメモリを確保してしまうと、ずっとメモリを保持し続けてしまう現象に悩んでいます。 require 'objspace' array = [] (1..20).each_with_index do |i| array << 'a'*1000000 puts "memsize: #{ObjectSpace.memsize_of_all / 1024} KB, rss: #{`ps -o rss= #{Process.pid}`.chomp} KB" if i % 5 == 0 array = [] GC.start puts "memsize: #{ObjectSpace.memsize_of_all / 1024} KB, rss: #{`ps -o rss= #{Process.pid}`.chomp} KB" end end こんな感じのコードを書くと、

    ruby - Rubyのプロセスが掴んでいる実メモリを解放する手段はありますか? - スタック・オーバーフロー
  • Rubyのメモリ割り当て方法とcopy-on-writeの限界(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: The Limits of Copy-on-write: How Ruby Allocates Memory 公開日: 2017/08/28 著者: Brandur サイト: https://brandur.org/ Unicorn(またはPumaやEinhorn)を実行していると、誰しもある奇妙な現象に気がつくでしょう。マスタからforkした(複数の)ワーカープロセスのメモリ使用量は開始当初は低いにもかかわらず、しばらくすると親と同じぐらいにまでメモリ量が増加します。大規模な番インストールだと各ワーカーのサイズが100MB以上まで増加することもあり、やがてメモリはサーバーでもっとも制約の厳しいリソースになってしまい、しかもCPUアイドル状態のままです。 現代的なOSの仮想メモリ管理システムは、まさにこの状況を防止するために設

    Rubyのメモリ割り当て方法とcopy-on-writeの限界(翻訳)|TechRacho by BPS株式会社
  • 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
  • Understanding Ruby GC through GC.stat

    Summary: Have you ever wondered how the heck Ruby's GC works? Let's see what we can learn by reading some of the statistics it provides us in the GC.stat hash. (1560 words/8 minutes) I call that an object leak. Most Ruby programmers don’t have any idea how garbage collection works in their runtime - what triggers it, how often it runs, and what is garbage collected and what isn’t. That’s not entir

    Understanding Ruby GC through GC.stat
  • 1