0

我在 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(),则内存不会增长。

4

1 回答 1

0

我建议这样做。将此代码放在单独的方法调用中。然后从 main 方法循环调用相同的方法。

同时密切关注堆内存使用情况。在经过一定数量的迭代(比如 1000 次)后,您应该能够达到较高的内存占用率。然后注意,如果 GC 正在发生或没有发生。

内存泄漏的一个很好的症状是,使用的内存平均持续飙升。

于 2013-09-23T04:50:36.043 回答