3

mapreduce プログラムの 1 つで、new Text()context.write 中に使用していました。

context.write(key, new Text(outputRecord.toDelimitedString("|")));

上記のステートメントを使用しているため、 Text オブジェクトがどのように格納され、メモリ管理がどのように処理されているかを知りたいです。また、どのオブジェクトからも参照されなくなった後のオブジェクト値の存在についても知りたいです。

これについて教えてください。

4

2 に答える 2

1

Hadoop のNoTextは不変ではありません。Hadoop のシリアライゼーション プロセスでは暗黙的に不変性が禁止されているため、それは不可能です。

この特定のケースでは、呼び出し内で直接バイト バッファーにcontext.writeコンテンツをシリアル化するだけなので、メソッドが返された直後にオブジェクトが破棄されます。TextText

Textメソッドに渡されるオブジェクトへのスタック参照がまだあることに注意してください。そのため、ガベージ コレクションの対象にはなりません。

于 2014-03-21T15:13:04.630 に答える