第八回 #渋谷java で発表した「あなたとスレッドダンプ」です。 スレッドダンプの使いみち、取り方、読み方について説明しています。 スレッドダンプこわくない。
第八回 #渋谷java で発表した「あなたとスレッドダンプ」です。 スレッドダンプの使いみち、取り方、読み方について説明しています。 スレッドダンプこわくない。
メモ。 参考:http://www.javainthebox.net/laboratory/JavaSE6/managementtools/mngtools.html jmapは、JVMのHeapメモリ内の情報をdumpするためのツールです。 http://docs.oracle.com/javase/jp/6/technotes/tools/share/jmap.html 引数にjavaのプロセスIDを渡してあげると、当該プロセスのメモリ情報をダンプすることができます。 jmap -dump:format=b,file=[file name] [pid] 上記の例では、バイナリ形式でheapのダンプ情報を出力します。 ダンプしたファイルは色々なツールで可視化が可能ですが、javaの標準コマンドであるjhatが一番楽だと思います。 jhat [file name] 引数のファイルには、上述
Purpose This tutorial covers the basics of how to use the G1 garbage collector and how it can be used with the Hotspot JVM. You will learn how the G1 collector functions internally, the key command line switches for using G1, and options for logging its operation. Time to Complete Approximately 1 hour Introduction This OBE covers the basics of Java Virtual Machine(JVM) G1 Garbage Collection (GC) i
HIGH PERFORMANCE NETWORKING ON THE JVM というプレゼン記事を見つけたので読むついでにざっくりメモ翻訳。 NORMAN MAURER RedHat (JBoss) - EAP コアチーム Apple 社の元下請 Netty in Action 著者 Apache Software Foundation のメンバー Netty / Vert.x コアディベロッパー Java, Scala Twitter: @normanmaurer GitHub: https://github.com/normanmaurer 一般的に 本当に必要なものは最適化だけだ。 1000同時接続 != 大規模。 数百程度の接続を使うだけならブロッキング I/O を使っとけ。 問題を見つけるためにプロファイラを使え。推測するな。 変更の前後で必ずテストしろ。そしてウォームアップを忘
java -XX:+PrintFlagsFinal -XX:+UnlockDiagnosticVMOptions -XX:+UnlockExperimentalVMOptions 尚、詳細が知りたい方は、この辺りを眺めるとより具体的に分かります。 src/share/vm/runtime/globals.hpp#l481 コマンドの説明 -XX:+PrintFlagsFinal -XXオプションの一覧を標準出力するオプションです。 -XX:+UnlockDiagnosticVMOptions 仮想マシンをチューニングする為のオプションを使えるようにするオプションです。 以下に示すリストでは {diagnostic}となっているものがこのフラグによって変更できるようになります。 -XX:+UnlockExperimentalVMOptions 将来サポート予定であるものの機能性が不安定なオプ
Javaアプリでトラブルがあったりすると、アプリケーションのログなどを読んで解析をすると思いますが、パフォーマンスやGC周りでのトラブルについては、JDKに標準付属しているコマンドを使用すると原因究明の手がかりがつかめたりすることがあります。 自分も、ちょっと前にやっていたプロジェクトでは、かなり使うことになりました。どれも有名だとは思いますが、使い方をメモしておくという意味を込めて書いておきます。 まず、今回のサンプルとして、以下のような明らかに問題のあるプログラムを用意。 Monitor.java import java.util.ArrayList; import java.util.List; public class Monitor { public static void main(String[] args) { int busyThreadNum = 3; int spar
English version JVMでGCのログ出すじゃないですか。んで、その時↓みたいに -XX:+PrintGCTimeStamps っていうオプションを指定するじゃないですか。 TODAY=`date "+%Y%m%d-%H%M%S"` JAVA_OPTS="-server -Xms512m -Xmx512m -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=256m \ -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC \ -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=32 -XX:TargetSurvivorRatio=85 \ -verbose:gc -Xloggc:/usr/local/tomcat/lo
vim-ref-jvmis 使い方 " Vundle の場合 " vimrc に追記&再読込して :BundleInstall Bundle 'ebc-2in2crc/vim-ref-jvmis' " NeoBundle の場合 " vimrc に追記&再読込して :NeoBundleInstall NeoBundle 'ebc-2in2crc/vim-ref-jvmis' Jvmis というコマンドが勝手に定義されるので、調べたいオペコードの上にカーソルを置いて :Jvmis を実行すると ref.vim インタフェースでリファレンスを閲覧出来ます。 リファレンスは The Java Virtual Machine Instruction Set から引いて来るので環境によっては一瞬もたつきますが、デフォルトでキャッシュを有効にしているので2回目以降は素早く引くことが出来ます *1 これ
細かいネタです。 実行している JVM のプロセスIDを取るには RuntimeMXBean 使うと簡単に取れます。 RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean(); String vmName = bean.getName(); long pid = Long.valueOf(vmName.split("@")[0]); System.out.println("VM Name : " + vmName); System.out.println("PID : " + pid); 実行結果はこんな感じ VM Name : 9588@hostname PID : 9588 RuntimeMXBean.getName() は、pid@hostname という名前を返すので、頭を抜き出せばプロセスIDが取得できます。 Sun の
JVM Operation Casual Talks : ATND 内容は参加者のブログエントリとtogetterが下記にありますのでそちらを見るとよいと思います。 JVM Operation Casual Talksに参加しました #jvmcasual - @johtaniの日記 2nd 「JVM Operation Casual Talks」発表資料のリンクをまとめてみる #jvmcasual - 元RX-7乗りの適当な日々 JVM Operation Casual Talks に参加してきました。 - susumuis Info JVM Operation Casual Talks #jvmcasual - Togetter で、このエントリでは発表を聞いて思ったことをつらつらと書きます。 ちなみに僕はJava歴10年以上なのですが、JVM運用経験はほとんどありません。最近はちょっと
4/7に、LINEさんのオフィスで開催された「JVM Operation Casual Talks」。 一部で、Cassandra Casualだったのではないかという疑惑もありましたが、なかなかためになる話が多くて、あとできっと資料を見たくなる日が来そうなので、ちょっとまとめておこうと思う。 こちらもあわせて読みたい JVM Operation Casual Talks #jvmcasual - Togetter Understanding Memory Management of JavaVM in 15 minutes (@stanakaさん) https://speakerdeck.com/stanaka/understanding-memory-management-of-javavm-in-15-minutes @stanakaさん、どこでJVM使ってるのかと思ったら、今日は
As you may have seen from my previous tutorials and case studies, Java Heap Space OutOfMemoryError problems can be complex to pinpoint and resolve. One of the common problems I have observed from Java EE production systems is OutOfMemoryError: unable to create new native thread; error thrown when the HotSpot JVM is unable to further create a new Java thread. This article will revisit this HotSpot
次? 代のサーバマシンによるシステムでは、CPUマルチコア化が進み、OSぜ 64bit化によってメモリも豊富に眩 むような大規模なものが一般的になるのではないでしょうか。このようなサーバ上ぜ Tomcatを起動させる場合、その? 富なリソースを生かしぜ Javaのヒープサイズ、GCチューニングを実施するのが一般的だと思゜ れます。ただし、このオプションを中途半端に? ? すると、逆にパフォーマンスを損なう可能性があることに注? しなければならないようです。 CPUマルチコアリソースを十分に活用する為ぜ GCチューニングパラメータに、「-XX:+UseParNewGC」「-XX:+UseConcMarkSweepGC」があります。前者ぜ GC処理をマルチCPUでパラレルに? 施するオプション、「-XX:ParallelGCThreads=n」と合゜ せてパラレル処理? (n)を指定出来ます。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く