- PR -

transient( トランジェント )って何?

投稿者投稿内容
Astmild
常連さん
会議室デビュー日: 2003/06/09
投稿数: 30
お住まい・勤務地: 大田区
投稿日時: 2003-07-18 19:00
引用:

maruさんの書き込み (2003-07-18 17:22) より:
これは、オブジェクトの中でオブジェクトを生成している場合でも、芋づる式に
トランジェント以外のオブジェクトも出力すると考えていいのでしょうか?

その考えでいいと思います。


オブジェクトは大抵の場合、関連するオブジェクトへの参照を持っています。

メモリ上でその参照をたどっていくと、ツリー構造またはネットワーク構造になります。

これをそのまま送信しても同じアドレスに配置できるとは限らないので
直列に並べ換え、参照を相対アドレスにするなど、列の中だけで完結させ
纏めるから「直列化」と呼ぶのだと思います。
#実際に相対アドレスなのかは分かりませんが、
#そのままのメモリイメージで外部に持ち出すことはできないので
#何かはしてるはず。
maru
ぬし
会議室デビュー日: 2003/01/27
投稿数: 412
投稿日時: 2003-07-19 10:47
わかりやすい記事を見つけました。

http://www.s34.co.jp/cpptechdoc/article/serialize/index.html
http://www.s34.co.jp/cpptechdoc/article/pse/index.html

この記事ではC++でのはなしです。
シリアライズしてオブジェクトをバイト出力する際に、オブジェクトの中のオブジェクト
のリンクを芋づる式にたどっていく場合、お互いを参照しているオブジェクトがあった
時に無限ループとならないようにシリアル番号を記録して・・・というような仕組みを
説明してました。

Javaの場合、Serializableを付ける事でシリアライズなオブジェクトとしてマーキング
し、あとはこの記事でやっているような複雑な処理を ObjectOutputStream なんかが
勝手にやってくれてるのかな?

スキルアップ/キャリアアップ(JOB@IT)