タグ

gcに関するy-kobayashiのブックマーク (20)

  • 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
  • Go言語のリアルタイムGC 理論と実践 | POSTD

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

    Go言語のリアルタイムGC 理論と実践 | POSTD
  • UnityのGCはどんな実装になっているのか

    こんにちは。Aiming エンジニアの久保田です。 僕の携わっているプロジェクトでは、近頃、Unity製クライアントのパフォーマンスの調査や改善を行っている最中です。 プロファイラを眺めていると、僕達が書くアプリケーションレイヤのコードが目立って遅い、ということは珍しいのですが、代わりにC#世界のスパイクとしてよく顔を出すのが、GC実行時間です。 C#は、タイプセーフでありながら人間にやさしく、getter/setter、async/await、Rx、ロケットなラムダ式、他他他…最新型の言語への影響も多大な、ファッション的にも◎な言語です。しかし、闇雲に全ての機能をタダで……というわけにはいかず、ことパフォーマンス面においては、GCというなかなか高い代償を支払うことになりかねないわけですね。 結論としては、UnityのGCは、皆が期待していたほど高性能ではなく、現状では僕達が書くC#が発生

    UnityのGCはどんな実装になっているのか
  • 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

  • OutOfMemoryError の調べ方 - Qiita

    OutOfMemoryError (以下 OOME)が起こったときにお手上げ状態にならないためにも、 Java のメモリ管理の仕組みとか、 OOME が起こったときの調査方法とかを調べる。 環境 OS Windows 7 > java -version java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) Java 8 で、 Oracle の JVM を前提とした話です。 Java のメモリ管理 これを知っておかないと、 OOME が起こっても、メモリ内で何が起こっていて、どこを調査すべきで、どのように対処したらいいのかが判断できない。 なので、まずは、そもそも J

    OutOfMemoryError の調べ方 - Qiita
  • Javaトラブルに備えよう #jjug_ccc #ccc_h2

    Concepts and tools of logging in Java. Javaにおけるログ出力の考え方と道具について説明. CC Attribution Licenseの元に公開します.

    Javaトラブルに備えよう #jjug_ccc #ccc_h2
  • Effectively managing memory at Gmail scale  |  Articles  |  web.dev

    Effectively managing memory at Gmail scale Stay organized with collections Save and categorize content based on your preferences. Introduction While JavaScript employs garbage collection for automatic memory management, it is not a substitute for effective memory management in applications. JavaScript applications suffer from the same memory related problems that native applications do, such as me

    Effectively managing memory at Gmail scale  |  Articles  |  web.dev
  • パーフェクトなCRubyを目指して - 1行のバグ修正に潜む苦労 - - I am Cruby!

    この記事はパーフェクトRuby Advent Calendar 2013 - Adventar の9日目です。 前の日のエントリーはパーフェクトRuby Advent Calendar 2013(8日目) Let's Sinatra Life - たちブログです。 まだ参加できますので、みなさまもぜひ。 パーフェクトRuby Advent Calendar 2013 - Adventar パーフェクトRubyRubyの仕様に大変詳しい同僚への献をインターセプトして読ませていただきました。 さまざまな機能をまとめたとてもよいだと思います。 著者のみなさまの苦労が偲ばれました。パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/1

    パーフェクトなCRubyを目指して - 1行のバグ修正に潜む苦労 - - I am Cruby!
  • 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に置

  • 最近のAndroid事情に対応した「OutOfMemoryErrorを知る」発表スライドを公開しました - ひつじのにっき

    横浜Android and モバイルOS プラットフォーム部で発表した資料です。 資料はAndroidアプリ開発者をターゲットにまとめました。OutofMemoryErrorの発生原理とメモリ管理について最新事情を加味してまとめました(新版、なのはAndroid 1.xのころの発表が古いのにまだ参照されていたりで、さすがに最新事情に合わせて更新したかったのです)。 Androidアプリにおけるメモリ事情は(初期に比べたら)改善していますが、OpenCVなど画像処理の需要、高解像度対応を踏まえると依然として十分とは言いがたいユースケースもあります。そんな中でメモリ資源をうまく使うための指標となれば幸いです。 資料にもある通り書きかけの状態ですのでコメントやmentionなど「こんな情報があるから書き加えて」「ここ調べて」「こういうのがおすすめ」「ここ間違えてる!」というご意見いただければ嬉し

    最近のAndroid事情に対応した「OutOfMemoryErrorを知る」発表スライドを公開しました - ひつじのにっき
  • Javaガベージコレクションのエッセンス

    あるアプリケーションの作業にとって、スループットは最も重要なターゲットです。1つ例を挙げると、長時間実行されるバッチ処理のジョブです。ガベージコレクションが実行されている間、バッチジョブが時々1、2秒止まっても、ジョブ全体がすぐに完了すれば問題ありません。 人間が直接対話するアプリケーションから金融取引システムまで、実質的な他のすべての作業では、システムが1、2秒か、数ミリ秒以上反応しない場合、大変なことになり得ます。金融取引では、しばしば一貫した停止時間と引き換えに、スループットを犠牲にするだけの価値はあります。物理的に利用可能なメモリ量によって制限されるアプリケーションを持ったり、footprintを維持しなければならなかったりすることもあります。そのような場合、停止時間とスループットの面の両方で、パフォーマンスをあきらめなければなりません。 以下のトレードオフは度々起こります。 大部

    Javaガベージコレクションのエッセンス
  • Java 8でPermGenのOutOfMemoryError問題は解決されるのか?

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

    Java 8でPermGenのOutOfMemoryError問題は解決されるのか?
  • 徹底解剖「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 謝辞 書はスポンサーのみなさまの金銭的支援によって執筆されました。 スポンサーのみなさま あ

  • MaxClients in Apache and its effect on Tomcat during Full GC | CUBRID blog

    This is the fourth article in the series of "Become a Java GC Expert". In the first issue Understanding Java Garbage Collection we have learned about the processes for different GC algorithms, about how GC works, what Young and Old Generation is, what you should know about the 5 types of GC in the new JDK 7, and what the performance implications are for each of these GC types. In the second articl

    MaxClients in Apache and its effect on Tomcat during Full GC | CUBRID blog
  • How to Tune Java Garbage Collection | CUBRID blog

    This is the third article in the series of "Become a Java GC Expert". In the first issue Understanding Java Garbage Collection we have learned about the processes for different GC algorithms, about how GC works, what Young and Old Generation is, what you should know about the 5 types of GC in the new JDK 7, and what the performance implications are for each of these GC types. In the second article

    How to Tune Java Garbage Collection | CUBRID blog
  • CUBRID blog - database management systems and software development

  • How to Monitor Java Garbage Collection | CUBRID blog

    This is the second article in the series of "Become a Java GC Expert". In the first issue Understanding Java Garbage Collection we have learned about the processes for different GC algorithms, about how GC works, what Young and Old Generation is, what you should know about the 5 types of GC in the new JDK 7, and what the performance implications are for each of these GC types. In this article, I w

    How to Monitor Java Garbage Collection | CUBRID blog
  • Understanding Java Garbage Collection | CUBRID blog

    What are the benefits of knowing how garbage collection (GC) works in Java? Satisfying the intellectual curiosity as a software engineer would be a valid cause, but also, understanding how GC works can help you write much better Java applications. This is a very personal and subjective opinion of mine, but I believe that a person well versed in GC tends to be a better Java developer. If you are in

    Understanding Java Garbage Collection | CUBRID blog
  • 例えば 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 (移転しました)
  • 『徹底解剖「G1GC」 アルゴリズム編』発売!! - I am Cruby!

    g1gcGCLoverのみなさん、お待たせしました。 GCのスピンオフとなる新著、『徹底解剖「G1GC」 アルゴリズム編』が発売中です! 達人出版会様の以下のページからご購入下さい。 なんと600円です!!! もうすぐにでもポチっちゃってください!!!!! 徹底解剖「G1GC」 アルゴリズム編 - 達人出版会 どういう内容なの?まえがきをみるとよくわかります。 今回はOpenJDK7(いわゆるJava7)に新しく実装された「G1GC(Garbage First Garbage Collection)」というGCの謎を解明していきます。 G1GCの大きな謎として「GC停止時間を予測できる」というのがあります。書 ではその謎の回答を何十ページもかけて解説しています。 G1GCについて書かれた資料として、Detlefsらの英語の論文(Detlefs04)があ ります。 ところが、これは謎

  • 1