ObjectOutputStreamでOutOfMemoryErrorな件
public void send(Object obj) throws IOException { objectOutStream.writeObject(obj); objectOutStream.reset(); }
ObjectOutputStreamは一度writeObjectしたオブジェクトを内部テーブルにキャッシュして保持しつづける仕様らしい。なので,同じオブジェクトを変更してwriteObjectしても一番最初に書き込んだオブジェクトが書き出されてしまう。また,キャッシュされたオブジェクトはGCで開放されないので,OutOfMemoryを回避するためには明示的にキャッシュをクリアする必要がある。ObjectOutputStream#resetを呼び出すことですべて解決。うまくオブジェクトが書き出されない不具合も,メモリ消費が激しい不具合も一挙に解消した。そういう大切なことはJavaDocに太字で書いておくべききっとそうすべき。
プレゼン発表前日の貴重な数時間を返してください。