再起動するまでに 12 時間以上実行されるプログラムがあります。プログラムはMinecraftサーバーであるため、実際にはそれほど頻繁に再起動することはできません.
とにかく、約 25 ~ 35 分ごとに、サイズが 42 ~ 67 MB のファイルが読み取られます。RandomAccessFile と MappedByteBuffer を使用して、ファイルを ObjectInputStream に読み込みます。
問題は、ファイルが読み取られるたびにメモリ使用量が 100 ~ 300 MB 増加し、ガベージ コレクションが行われないため、最終的に OOM が発生することです。現在 VisualVM を使用してデバッグしていますが、ファイルの読み取り時にのみ RAM の使用量が増加しています。
私が追加しました
((DirectBuffer) buffer).cleaner().clean();
しかし、VM をガベージ コレクションするようには見えません。