IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
今回は、iXce’s blog » Blog Archive » Optimizing memory usage in Python: a case study という記事を見つけて興味深かったので紹介したいと思います。何も説明書いてないところがあるので、詳しく知りたい人は元記事を読んでほしいです。 動機 プレーンテキストをGコードに変換するプログラムを書いている 3.8MB (14万Gコード) のファイルを読み込むと、244MBもメモリを使ってしまう だからメモリ使用量を減らしたい やったこと プロファイル どこがメモリをたくさん使ってるのか調べるためにHeapyを使う $ pip install guppy で入れられる。 するとこんな感じの結果が出力される。 Partition of a set of 225737 objects. Total size = 115386656 by
1 ニュース OpenJDK8系の 8u262 以降の版とともに使用しないでください (2020/7/24) OpenJDK 8u262 は、素晴らしいことに、いくつかのディストリビューションで JDK Flight Recorder (JFR) が同梱されました。 しかし、残念なことに、HeapStats は 8u262 以降ではうまく動作しません。 8u262 以降でのJavaヒープの確認には、JFRの使用をお勧めします。 詳しくは、このページの下の実行環境セクションをご参照ください。 こちらもまたご覧ください。 http://icedtea.classpath.org/pipermail/heapstats/2020-July/002457.html {Exit|Crash}OnOutOfMemoryError を HeapStats と共に使わないでください(2019/7/25)
プロセスIDがわかったらjmapコマンドでダンプを取ります。 サーバのディスク容量に注意してください。 heapサイズを2GBとかに設定した場合は2GB以上のファイルが 生成されることがあります。 これで指定した場所にダンプファイルができます。 -dump:live,format=...というようにliveをつけるとGCが起きて コマンド実行時に活きているオブジェクトのみのダンプになるようです。 とりあえず今回はフルで取ります。 ヒープダンプの中身を解析をする 解析をするにはツールを使います。 java標準のjhatやMemory Analyzer、HeapAnalyzerなど いくつかありますが今回はMemory Analyzerを使います。 Eclipseベースなのでサイズの大きいダンプファイルを開く場合は MemoryAnalyzer.iniの設定でツール自体のヒープサイズを 増やす
esup 20170729.1742(in MELPA) the Emacs StartUp Profiler (ESUP) init-loader.elに対応するにはnofletも必要です。 M-x package-install noflet esup(Emacs Start Up Profiler)は、Emacsの起動が遅い問題を解決します。 遅い原因を見付けるにはプロファイラをかけるのが一番! 時間がかかる処理から順に式を表示してくれます。 使い方はM-x esupを実行するだけです。 すると、子プロセスでEmacsが立ち上がり、 その結果が*esup*バッファに表示されます。 以下のサイトがとても詳しいです。 特に後者はesupに限らず、 高速起動のためのあらゆるTipsがまとまっています。 小人閑居して: esupを使いながらEmacs起動の高速化 Emacs 高速化起動にむけ
Eclipse profilerプラグインとは Eclipse profilerプラグイン(eclipsecolorerプロジェクト)とは、Eclipse上でプロファイリングを行うためのプラグインです。同様の機能を持つプラグインとして、jMechanic(http://jmechanic.sourceforge.net/)やExtensible Java Profiler(http://ejp.sourceforge.net/)などもあります。 『Java Platform Performance』(注)によれば、プロファイリングとは、以下を明らかにする作業です。 呼び出される回数の多いメソッドはどれか 処理に時間がかかっているメソッドはどれか どのメソッドがそのメソッドを呼んでいるのか どのメソッドがメモリをたくさん使っているか プロファイラを使うと、これらを容易に特定できます。Ecli
PyPy 2.6 と同時に、 vmprof という CPython/PyPy 用のプロファイラが登場しました。 私はまだ PyPy では使っていませんが、CPythonのプロジェクトをこれでプロファイル取ってみたらなかなか面白かったので紹介します。 概要 Python にはもともと標準ライブラリとしてプロファイラ (cProfile) が付いてきていますが、これは関数の呼び出しと戻りでコールバック関数を呼び出しつつ実行時間を計測するタイプのプロファイラで、短時間でも正確なプロファイルが取れる反面、オーバーヘッドが大きく、小さい関数をたくさん呼び出す部分がオーバーヘッドでより大きく見えてしまうなどの問題がありました。 これと別の種類のプロファイラとして、定期的にサンプリングして、サンプルが多いところが実行時間も多いハズ、というプロファイラもあります。こちらはある程度の量のサンプルを集めないと
こんにちは!SI部の満石です。 以前、仕事でJRockit Flight Recorder(現在OracleJDKに付属しているJava Flight Recorderの元になったもの)を使ったことがあり、最近出てきたHeapStatsにも興味があって使ってみたのでご紹介します。 HeapStatsとは NTT OSSセンタが開発したOSS(Open Source Software)であり、HeapStatsの日本語Wikiには以下のとおりに書かれています。 HeapStats とは、JavaVM のヒープやGC状況を監視する軽量なツールで、エラーの兆候を検知してSNMPのようなリアルタイムなアラートを発します。生成するログはかなり小さいもので、GUIツールで解析することができます。HeapStatsは、次の二つのプログラムで構成されます: エージェント(agent) – JavaVMの情
アプリケーションのパフォーマンス・チューニングなどで使用するツールといえば,まず第一にあげられるのがプロファイラです。最近は,EclipseのTPTPや,NetBeans Profilerなどフリーで使えるプロファイラが増えてきたので,使ってみたことがある方も増えてきていると思います。 意外に知られていないのですが,Java SEにも標準でプロファイラが付属しています。それがhprofです。 Java 2 SE 5.0からは「-agentlib:hprof」という起動オプションでhprofを起動できます(J2SE 1.4.までは「-Xrunhprof」)。使い方はヘルプ・オプションで表示できます。 C:\temp>java -agentlib:hprof=help HPROF: Heap and CPU Profiling Agent (JVMTI Demonstration Code)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く