Javaでファイルを暗号化する際にメモリリークを見つけるのに苦労しています。
次のコードは、アプリのメモリ使用量を増加させ、完了後に使用済みメモリを解放しません。
while (bytesRead > 0) {
cout.write(buffer, 0, bufferSize);
md.update(buffer, 0, bufferSize);
bytesAvailable = fin.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fin.read(buffer, 0, bufferSize);
readSoFar += bytesRead;
cout.flush();
}
推奨されていない System.gc() を反復ごとに配置すると、メモリは増加しません。