2
私は最終的にバイト配列に変換し、キャッシュに書き込まれるに書き込まれた大量のデータを持っているByteArrayOutputStreamは、している:ここで変換バイトストリームが
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (JsonGenerator jg = mapper.getFactory().createGenerator(baos)) {
for (Object result : results) {
jg.writeObject(result);
}
}
localCache.put(cacheKey, baos.toByteArray());
}
catch (IOException e) {
throw Throwables.propagate(e);
}
baos.toByteArray()
が作成されます私が避けようとしているメモリ内のデータの完全なコピー。余分なメモリを使用せずにストリームをバイト配列に変換する方法はありますか?
追加スペースが必要だと思います。 BAOSにコピーを作成させ、BAOSのバイト配列への参照を保持させるかどちらかを指定します。しかし、構築されたBAOSオブジェクトが破壊されることはないので、2番目のオプションは 'メモリリーク'を引き起こす可能性があります。 BAOSをlocalCacheに組み込むことができますか? – Veera
残念ながら、localcacheはバイト配列しか受け付けません。 – seriousgeek