toge's diary

コンピュータ関連の趣味をつらつらと。

Thread.getStackTraceはJDK5u19以降ではもうメモリリークしない

まずは、昔の落ち穂拾いでも。

JDK5.0で多くの人を絶望のどん底に貶めた悪名高いバグとして、「Thread.getStackTrace()がC-Heapでメモリリークする」があります。 Bug ID: 6469701 java.lang.Thread.getStackTrace() causes memory leaks in the VM

未だにJDK5.0を使っているレガシープロジェクトは多く、その追加開発でハマる方々も多いので、一応追記。
このバグ、長年放置されてきたのですが、2009年にリリースされたupdate19で無事修正されています。

恥ずかしながら、私このバグ修正になかなか気が付きませんでした。
修正Bug IDが新しいものに差し替わっていて、そのタイトルが「Memory leak occurs in JVMTI」なんですもん。Bug ID: 6751861 Memory leak occurs in JVMTI(jdk5.0u16)

releasenoteのタイトルだけ見て判断しちゃだめ!という典型的な内容でした。関連Bug IDもたどらんとダメですね。

JDK7.0も出た2011年に積極的にJDK5.0を使う人はいないと思いますが、いい教訓になった一件です。