おのたく日記 YouTubeも始めました→
2004-09-09(Thu) [長年日記]
■ [Tiger] Java stack traces
Javaのスタックトレースの取り方を解説してくれている。APIで取得するならば
J2SE 1.3以前 (new Throwable()).printStackTrace()
J2SE 1.4 Throwable.getStackTrace()
J2SE 5.0 java.lang.Thread.getStackTrace()
全部のスレッドをとるならばThread.getAllStackTraces()
うごいているJVMのスナップショットを取るならば、SIGQUITか、Ctrl-\ (WindowsならCtrl-Break)が使えるけれど、これらはJVMを-Xrs付きで起動していると無効。
-Xrs付きで起動されていたりハングアップしていてもJ2SE 5.0(Tiger)では、jstackコマンドでスタックトレースを取ることが出来る。
また、JVMが死ぬときにCore以外にhs_err_pid
■ [Tiger] Histogram of Java heap
J2SE 5.0(Tiger)で、プロファイラーを噛ませていなくても、ヒープメモリのヒストグラムが、「jmap - Memory Map」コマンドにより表示できる事の紹介
% jmap -hist <pid>
って利用するらしい。
出力サンプルが見たいなぁ〜 I want to see an histogram output sample.
■ [Tiger] Sizeof for Java
Javaには、いままでSizeofが無くて、「このオブジェクト沢山つくるけど、平気かなぁ」と思いつつ、「やってみるか」でVectorなどに、じゃんじゃん貯めてOutOfMemory Errorでビックリしていた。
J2SE 1.4以前だと、プラットフォームによっては、ウソになるけどなと思いつつ「Sizeof for Java」みたいな方法でオブジェクトのサイズを出していた。
J2SE 5.0(Tiger)からは、java.lang.instrument.Instrument.getObjectSizeで、オブジェクトのサイズが分かる。
また、jmap -histoコマンドでも、オブジェクトのサイズと総量が表示される。
って、解説してくれている。ありがたい。
■ Sundararajanさん
上に上げた、いつもはJavaOneのセッションを聞いて勉強してきているような、いくつかのJ2SE 5.0(Tiger)の情報が書かれているblogの著者はSundararajanさん。
「A. Sundararajan's Weblog - My First blog」によると、J2SE 5.0(Tiger)のdebuggerやツールの開発を行っている人らしい。
さらに、興味があったのでgoogleしてみたら、ホームページは、Sundararajan's Home」で、現在はSun Microsystem Indeaで、開発しているそうです。また、日本にも1年4ヶ月いたそうで、ちょっと日本語もできるいうのが嬉しい!
A. Sundararajanさんより召喚
|