You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Since we don’t have any nice NMT (Native Memory Tracking) MBean in HotSpot (yet), and therefore not in the JMC console, I thought I’d show how it can be done using command line arguments and JCMD. Please note that you’ll get a 5-10% performance hit if you enable this. Step 1 – Enabling NMT This is done by using the following command line: -XX:NativeMemoryTracking=[off|summary|detail] Where the dif
Eclipseの「Step Into」の挙動が設定によって変更できることを知っていましたか? 今回は、「Step Into」を始めとする「Step実行」の挙動を変更する「Step Filtering」の設定方法と利用例を紹介します。使えるかも、と思ったら人は、ぜひ導入を検討してみてください。 目次 1. 「Step Into」とは2. 「そこに潜らなくてもいいのに!」3. 解決策:Step Filtering3.1. 有効化3.2. フィルタ設定3.3. その他の設定4. 使い方5. 設定例1:どうでもいい標準ライブラリのコードに飛ばないようにする5.1. 問題5.2. 対策:無視するクラスを設定する6. 設定例2:ClassLoaderへのStep Intoを回避する6.1. 問題6.2. 対策:ClassLoaderをフィルタする7. 設定例3:単純なgetter/setterを無視す
Javaでデバッグしにくい3つの場面 Javaアプリケーションで構築されたシステムの障害や性能問題が発生した場合、大半はデバッガやプロファイラ、ミドルウェアやサードパーティが提供するツールを用いることで解析できてしまいます。 しかし、以下のような状況ではJavaの世界からのアプローチがしにくく、通常のデバッグノウハウが使えないことがあります。 プロセス再起動が許されないシステムでの情報取得がしたいとき 本番環境でしか発生せず、テスト環境でデバッグできない問題の場合 GC(ガベージ・コレクション)ログ(-Xloggcなど)のように、javaコマンド起動オプションを与えなければ取得できない情報が必要な場合 ソース変更が許されない場合に、特定状況下の情報を取得したいとき ある特定のメソッドなどが実行された瞬間のスレッドダンプやスタックトレースなどが必要な場合 ソースの変更ができない、環境の制約な
Products Processors Accelerators Graphics Adaptive SoCs, FPGAs, & SOMs Software, Tools, & Apps
わらじ1.0 わらじとは? わらじはクラスの衝突を検出するシンプルなJava Web Startアプリケーションです。 使い方 調査したいファイルをドラッグ&ドロップしてください。 衝突しているクラスがあればタイムスタンプとファイルサイズと共に表示してくれます。 わらじは META-INF ディレクトリ以下の衝突については報告しないことに注意してください。このディレクトリ下では必ず MANIFEST.MF ファイルが衝突しています。 現在のところ、改めて衝突を調査するにはアプリケーションを再起動する必要があります。 スクリーンショット 1. クラスの衝突が検出されていない状態 起動方法 このページトップのわらじのアイコンをクリックしてください。 Java Web Start は PC のセキュリティを脅かす可能性がある旨のダイアログを表示します。 起動するには "開始 " をクリックしてく
数百キロのコードでブルー - ドクターTomcat緊急救命:現場から学ぶWebアプリ開発のトラブルハック(14)(1/2 ページ) 本連載は、現場でのエンジニアの経験から得られた、APサーバをベースとしたWebアプリ開発における注意点やノウハウについて解説するハック集である。現在起きているトラブルの解決や、今後の開発の参考として大いに活用していただきたい。(編集部) 人は真実を知りたがる…… そして、不幸が始まる ある晴れた日、温かい太陽の光を体に浴びながら、めずらしく爽快な気分で会社に出社した。しかし、その爽快な気分も長くは続かなかった。出社するなり、上司から次のようにいわれた。 「茨城で開発しているシステムが、リリース直前にナゾのフリーズに悩まされているようだ。支援依頼があったのだが、ちょっといって原因を調べてやってくれないか」 今回の現場は、都心から少し離れている。私は特急の乗車券を
これらの情報を基に、OutOfMemoryErrorの障害発生原因を探ることとなる。 障害調査~メモリ領域を切り分ける~ まずは、GCログやOutOfMemoryErrorのエラー情報から、「Javaのどのヒープ領域(Javaヒープ、Permanentヒープ、Cヒープ)でOutOfMemoryErrorになっているか」「どれだけのメモリを確保しようとして失敗したか」を確認する。 前回記事で、OutOfMemoryのエラー情報からどの領域でメモリ不足が発生しているかを見分けるポイントについては紹介した。例えば、以下のような場合には(*1)からJavaヒープでメモリが不足していることが分かる。 java.lang.OutOfMemoryError: Java heap space <=======【*1】 at java.nio.CharBuffer.wrap(CharBuffer.java:
The Eclipse Memory Analyzer is a fast and feature-rich Java heap analyzer that helps you find memory leaks and reduce memory consumption. Use the Memory Analyzer to analyze productive heap dumps with hundreds of millions of objects, quickly calculate the retained sizes of objects, see who is preventing the Garbage Collector from collecting objects, run a report to automatically extract leak suspec
バグ修正はプログラマの仕事の一つですが、このうちのかなりの時間は問題を再現することに費やされます。 症状からバグの全容が推察できる時もあるのですが、多くの場合には、手元で問題を再現し、更なるデータを集めることによって始めてバグが理解されるからです。しかし、環境に依存する問題などは再現が難しい場合もあります。どうしたらよいでしょうか。 ロギングというのがよく行われる解決・予防策ですが、「デバッガを走らせて変数xの値を教えてくれればいいのに!」と思った事があるのは私だけではないと思います。ロギングと異なり、デバッガは予めプログラムに障害発生を予期するコードを埋め込んでおく必要はありません。また、呼び出し元のローカル変数をアクセスしたり、任意の式を評価したり、あるいは変数の値を変更することもできてしまいます。当たり前ですが、障害分析ツールとしてはデバッガはずっと強力だからです。 ではなぜユーザー
BTrace is a safe, dynamic tracing tool for the Java platform. BTrace can be used to dynamically trace a running Java program (similar to DTrace for OpenSolaris applications and OS). BTrace dynamically instruments the classes of the target application to inject tracing code ("bytecode tracing"). Tracing code is expressed in Java programming language. There is also integration with DTrace for the Op
Flag to log stack traces for application code which abandoned a Statement or Connection. Logging of abandoned Statements and Connections adds overhead for every Connection open or new Statement because a stack trace has to be generated. 設定の確認 設定が有効な状態で Apache Tomcat を起動すると、起動時に下記の様なメッセージがコンソールに出力される。 AbandonedObjectPool is used (org.apache.tomcat.dbcp.dbcp.AbandonedObjectPool@5f8bae) LogAbandoned:
- その1: 自宅サーバがハング - その2: フリーズの原因はガベージコレクション - その3: 侍でヒープ使用量を確認 - その4: リーク箇所を確認する色々な方法 - その5: Memory Analyzer でヒープダンプを解析(最終回) 今回のメモリリーク現象はリークの再現方法がわからないため、運用環境から詳細なデータが取得できるheapdumpを取得した、というのが前回までのあらすじです。 次は、ヒープダンプの解析。 ヒープダンプは JDK に付属の jmap コマンドで取得します。 jmap -heap:format=x [pid] または jmap -heap:format=b [pid] といった形で実行するとヒープダンプを xml 形式、またはバイナリ形式で記録できます。 通常生のヒープダンプを人間の目で読むことはないので xml 形式は使いません。バイナリ形式で取得し
・その1 / スレッドダンプの取り方 ・その2 / Linux だと java プロセスがいっぱい!? →その3 / Windows サービスとして登録している場合は? ・その4 / WebLogic Server とスレッドダンプ Windows 環境で、サーバサイドのプログラムは Windows サービスとして登録して運用することが多いです。 例えば Tomcat 5.5 であれば %TOMCAT_HOME%¥bin¥service.bat install [サービス名] でサービス登録、 > net start [サービス名] で起動できます。(もちろんサービスコントロールパネルでもOk) Tomcat5.5 が Widnows サービスとして起動した様子 しかし、このコマンドプロンプトは Tomcat のプロセスに直接絡んでいないため、Ctrl+Break は効きません。 そんなと
・その1 / スレッドダンプの取り方 →その2 / Linux だと java プロセスがいっぱい!? ・その3 / Windows サービスとして登録している場合は? ・その4 / WebLogic Server とスレッドダンプ 前回説明した通り、スレッドダンプを取るのは簡単です。解析にはちょっと慣れがいるのですが・・。 さて、運用環境でフリーズしたぞ!ってときにスレッドダンプを取ろうと思うと困ることがあります。一つは Linux 環境でやたらとプロセスが表示されてしまい、どのプロセスIDを指定すれば良いかわからない場合です。 一部の Linux ではスレッドの実装の違い(※)から、ps コマンドを実行した際、Java アプリケーションが一つしか起動していなくても大量に Java プロセスが表示されてしまいます。 その場合は pstree コマンドで一番親となるプロセス(一番左上に表示
→その1 / スレッドダンプの取り方 ・その2 / Linux だと java プロセスがいっぱい!? ・その3 / Windows サービスとして登録している場合は? ・その4 / WebLogic Server とスレッドダンプ スレッドダンプについて網羅的に説明した資料はあまりないのでちょっと書いてみました。まとまったら侍のドキュメントに追加するつもりです。 スレッドダンプとは、 Java のプロセス内部で動作している各スレッドがそれぞれ何をしているか確認できるものです。 Java のプログラムがフリーズした場合や、パフォーマンス低下が見られる場合などに取得すると、どのスレッドが停滞しているのか、プログラム中具体的にどこで止まっているのか確認できます。 スレッドダンプは任意のタイミングで SIGQUIT シグナルを送る(Unix)、または キーボードで Ctrl+Break を押下す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く