[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01405] Billboard and OrientedShape3D





小池です。

Java3D 1.2で追加された、OrientedShape3Dに関して・・と
いうか、Billboardに関してです。

これまで私のプログラムでは、大量のBillboardノードを
シーン内に持っていました。が、あまりにパフォーマンスが
悪いので、OrientedShape3Dに置き換えました。

これで少なくとも動きはかなりスムーズになりました。
これは予期したとおりだったのですが、思わぬ副作用が。

これまで、私のプログラムでは、シーングラフ内のほとんどの
ノードを破棄しても(破棄したつもりでも)、消費していた
メモリがほとんど開放されないという問題がありました。

かなり複雑かつ大きなプログラムなので、おそらくどこかに
オブジェクトへのリファレンスを残してしまっているのだと
考えて、何度もデバッグしようとしていたのですが、どうも、
Billboardノードのせいだった気配が濃厚です。

Billboardを使わなくしたことによって、その他のコードも
一部変更したので絶対確実とは言えないのですが、Billboard
からOrientedShaped3Dに変更してみたところ、シーンの破棄に
よって、占有していたメモリのほとんどが開放されるように
なりました。

Billboardが、勝手に自分のリファレンスをどこかに登録して
いて、自分がliveでなくなっても登録を削除しないのでは
ないかと予想しています。

・・ということで、一応お知らせいたします。
Billboardを使用している方で、メモリリークに悩んでいる方が
いらっしゃったら、OrientedShaped3Dで置き換えてみると解決
する *かも* しれません。

もし試してみる方がいらっしゃったら、ぜひ結果をお知らせ
ください。



/* written by Koike,T. */