nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

java

GCログの相対時間を絶対時間に変換する

GCログの-XX:+PrintGCTimeStampsは起動時からの経過時間を行頭に付与する。最近のVMだと絶対時間を吐いてくれる-XX:+PrintGCDateStampsが使えるけど、前者しか付与されていない相対時間のGCログを解析する機会も結構ある。というわけで相対時間を絶対時間に…

「GroovyでEJB作成は辛い」の解説

GroovyでEJB作成は辛い、でなにがどうなっているのかの解説。 Exception while loading the app : EJB Container initialization error javax.ejb.EJBException: Illegal non-business method access on no-interface view at megascus.javaee6groovy.__EJB3…

JavaOne Tokyo 2012でThe New JSR-107 Caching Standardの話をしました

資料はJavaOne Tokyo 2012 セッション資料からダウンロードできますが、どちらかというと口頭でしゃべっている部分が多かったです。ユースケースやJSR-347 Data Grids for Javaとか。Togetterはこちら。Oracleの寺田さんとの共同セッションということで、特…

Javaプログラムで自分自身のヒープダンプを吐く

自分で喉に指突っ込むみたいなアレですが、メモリリークの単体テスト書いててこのタイミングでヒープダンプ取りたいなー、というユースケースがあったので。 String heapDumpFilename = "heap.bin"; boolean liveOnly = true; MBeanServer server = Manageme…

JBossがおかしい!あなたならどうしますか?

Java Advent Calendar 2011とJBoss Advent Calendar 2011の28日目のエントリです。タイトルはMySQLがおかしい!あなたならどうしますか? – MySQL Casual Advent Calendar 2011のパクリです。素晴らしいエントリですね。このエントリでは対象をJBossとJava V…

GCログが無かったときに通常のログからGCを類推する

「昨日JBossの応答が非常に悪くなったので再起動しました、GCログは取ってませんでした、原因調査お願いします」というような相談を受けたとき、まあ大体GCが犯人なんだけど、GCログないのでGCログ有効化して再現待ちましょうね、というのが普通の着地点。で…

GCログを上書きしないためのTips

オプションで指定するファイル名に日時を入れましょう。この方法は標準出力のリダイレクトなんかにも応用できる。 -Xloggc:/path/to/gc.log.`date +%Y%m%d%H%M%S`意外に知られていないというかちゃんと保存しないで上書きしてて残念なことになっているケース…

スタックトレースとソースコードの行番号を照合する

「エラー出力されているので調べてください、利用しているJBossのバージョンはAです」と言って渡されたスタックトレースに含まれている行番号がJBossのバージョンAのソースコードと合致しない、というようなことがごくまれにあります。とても不思議ですね。…

Fedora 14でOpenJDKをビルドする

さて、第1回JVMソースコードリーディングの会(OpenJDK6)もあることですし、OpenJDKのソースに手を入れたりコンパイルオプションとか変えてビルドしたいなぁ、とか思いますよね。というわけで一つOpenJDKビルド用サンドボックスとなるFedora 14環境を用意して…

TomcatではなくJBossを選ぶ○○の理由

java-ja忘年会でharu860さんに聞かれたのでエントリを書くよ。と思ってざっくり書いて放置していましたすみません。この質問へのよくある回答として「EJBを使うとき」みたいなものがありますが、この回答は多くの場合何の役にも立ちませんね。このような回答…

BytemanによるJava黒魔術

クリスマスも近いですね。さて、クリスマスといえばどういうわけか黒魔術への需要が一気に高まる時期のようですので、Java Advent Calendar -ja 2010の12月20日はJavaの黒魔術をお送りします。昨日はid:celitanでした。今日紹介する黒魔術はバイトコードイン…

EmacsでJavaを書く

この記事は古い情報です。EmacsでJavaを書くという話 - Qiitaを参照してMaghanadaを利用してください。日常的にJavaを書く人たちのたぶん99%くらいはEclipseかNetBeansかIntelliJ IDEAといったIDEを利用しているであろうと思われる現代において今日も元気にE…

Javaプロジェクトのパッケージ名をざっくり変えたい

自分のローカルにあるjp.programmersパッケージになっているサンプルコードとかのプロジェクトをcom.redhat.jbossパッケージとかにリネームしてお客様に渡したいなー、というケースがあったのでシェルスクリプト書いた。 #!/bin/sh # Usage: ./repackage.sh …

JVM勉強会でLTしゃべってきました

わかる!JavaVM — 2時間でわかる?JavaVM入門 : ATND主催のゆるよろさん、会場提供のOracleさんありがとうありがとう! 発表スライド http://www.slideshare.net/nekop/classloader-leak-patterns 利用したソースコード http://github.com/nekop/sandbox/blob/…

OutOfMemoryErrorが発生したときにきちんとJavaプロセスを殺す

OutOfMemoryErrorが発生してもスレッドを異空間に葬るだけでJava VMはそのまま動き続ける場合があるけど、当然ながら状態に一貫性のない状態で動いている可能性があるわけで基本的にはとっとと死んで欲しいわけである。一般的に言うところの「不定」状態。OO…

Java VMオプションメモ

自分がJBoss ASでよく利用するJVMオプションのリスト。チューニングのベースでもある。 -server -Xmn256m -Xms1024m -Xmx1024m -XX:PermSize=256m -Xss256k -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:SurvivorRatio=8 -X…