タグ

メモリに関するfa11enprinceのブックマーク (6)

  • プログラムがメモリをどう使うかを理解する(1)

    この記事の狙い この記事は、端的に言えば この図が言わんとしていることを理解できるようになるための解説を目指しています。 昨今のプログラミング環境において、メモリの管理方法やその実態は、詳細を知らずとも目的を達成できるようになっています。といっても、実際にはメモリは無尽蔵に使えません。制約が厳しい環境下で動かさねばならないプログラムもありますし、多少潤沢に使える環境であっても、無駄に浪費するよりは、必要最低限のメモリで効率よく動作するプログラムの方が、多くの場面においては良いプログラムと言えるでしょう。 メモリのことなど知らなくてもプログラムを書けるのは一つの理想ではありますが、現実的にはその裏に隠されている(抽象化されている)仕組みを知っておいたほうが有利です。また、昨今のレトロゲームにおけるタイムアタックで駆使されるメモリ書き換えのテクニックなども、何故そういったことが可能なのかを知る

    プログラムがメモリをどう使うかを理解する(1)
    fa11enprince
    fa11enprince 2022/01/06
    そういえばXBoxのなかでなぜか360だけビッグエンディアンだったなと、どうでもいいことを思い出した。
  • JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ - yoskhdia’s diary

    JVMにチューニング項目は多々あれど、プロダクションで運用する際に予めおさえておきたい項目をまとめてみるエントリです。*1 勿論、OSもJVMもデフォルトである程度のパフォーマンスは発揮でき、計測を伴わないチューニングは悪手であることはよく知られています。 しかし、設定しておかないとパフォーマンスにそのまま影響すると分かるものを調べないのは裸で戦場に赴くようなものです。*2 どんな項目をどう変更すれば良いのか知っていることは重要な武器なのです。 なぜ調べるのか 今回、チューニングポイントを調べるにあたって、私のモチベーションはどこにあるのかを考えると、以下の要件を満たしたいということがあげられます。 アプリケーションとして求められる品質水準として動作する → 性能目標 異常時に事象を追うことができる ここでいう品質水準・異常とは、パフォーマンスが明らかに低い、アプリケーションがクラッシュす

    JVMアプリケーションを運用する際のメジャーどころチューニングポイントメモ - yoskhdia’s diary
  • jstatを使うとJVMのメモリ使用状況が分かる - $shibayu36->blog;

    最近頻繁に手元で起動したsbtがjava.lang.OutOfMemoryError: Metaspaceで死ぬので、メモリ使用状況を確認するコマンドを調べた。備忘録として残しておく。 jstatを使用したJavaアプリのメモリ計測 - Qiita Java開発の性能改善! その1 jstatによるヒープ/GCの確認 - Qiita の記事が参考になる。 jpsとjstatを利用する。この二つはJDKに含まれているのでインストールされていれば利用可能。 まずjpsでJVMが動いているプロセスを特定する。 $ jps -v 60820 Main 55060 sbt-launch.jar -Xms1024m -Xmx1024m -XX:ReservedCodeCacheSize=128m -XX:MaxMetaspaceSize=256m 76790 Main 1067 -Xms128m -X

    jstatを使うとJVMのメモリ使用状況が分かる - $shibayu36->blog;
  • JDK8(Linux 64bit)のデフォルトヒープサイズ - n-agetsumaの日記

    Oracleの公式ドキュメントには、-Xmxが未指定であった場合のエルゴノミクスによる最大ヒープサイズは『32GBを上限として、物理メモリの4分の1』書かれている。32GBは-XX:-UseCompressedOopsにより圧縮Oopを明示的に無効にした場合の最大デフォルトヒープサイズで、何もオプションを付けずに起動した場合は29GBが上限。 ヒープサイズの決定はarguments.cppのArguments::set_heap_size()で計算されている。デフォルトの最大および初期ヒープサイズは、物理メモリ量により異なる。 デフォルト最大ヒープサイズ(-Xmx) 物理メモリが248MB以下の場合 物理メモリの2分の1。 248MBは-XX:MaxHeapSize(デフォルト124MB) x -XX:MinRAMFraction(デフォルト2)の値。 物理メモリが248MBより大きい場合

    JDK8(Linux 64bit)のデフォルトヒープサイズ - n-agetsumaの日記
  • NyaRuRuの日記 - 十分に物理メモリを搭載しているにもかかわらずスワップアウトが発生する理由

    多くの人々は,Windows OS でのスワップアウトを「メモリが足りなくなったときの緊急回避」と考えているようです.実際,緊急退避的なスワップアウトも存在しますが,PC の搭載メモリが増えてきた現在では,しかし,もっと別の形でのスワップアウトの方が頻繁に起きるようになってきています.ここでは,より現実的なスワップアウトの姿を見てみることにしましょう. ある想像上のプログラムを考えます.そのプログラムは,300 MB のヒープを確保し,同時に 300 MB 程度のファイルのあちこちにランダムアクセスを繰り返すとします. Windows は,このアプリケーションを円滑に動作させるために,どのように物理メモリを提供するのでしょうか? アプリケーションが,ヒープに対するランダムアクセスのみを行い,ファイルアクセスはほとんど行わない場合 この場合,300 MB の物理メモリをヒープのために維持し続

    NyaRuRuの日記 - 十分に物理メモリを搭載しているにもかかわらずスワップアウトが発生する理由
  • ゲーム開発におけるメモリアロケーションの実装について - Qiita

    はじめに 今回は、メモリアロケーションに関して、Java・C#などプログラミング言語やUnity・UDKなどのゲームエンジンにおいてはメモリの事なんて全然気にしなくていい時代になっている(!?)中、ゲーム開発におけるメモリアロケーションについて、えーでるわいすで現在使われているゲームエンジンでの実装も踏まえて一回まとめてみようかと。。。 発端は、@aizen76さんの「カスタムメモリマネージャと高速なメモリアロケータについて」というスライドを偶然見つけたのがきっかけで、自分は今まで深く理解せず何となくでやってきてしまっていた気がしたのでちょっとまとめて見ようと思い立った感じです。 対象 C++初級者~中級者ぐらい ※ ガベコレだのスマートポインタだのmallocの実装によるマルチスレッド環境下での速度がどうとかその辺の話は止まらなくなるので我慢します( ´∀`) メモリアロケーションって何

    ゲーム開発におけるメモリアロケーションの実装について - Qiita
  • 1