【发布时间】:2021-09-20 21:28:05
【问题描述】:
我的 Java 应用程序工作了 ~1 天, (我使用不同的库来处理照片,如 ffmpeg、javacv、javacpp) 然后我看到我的应用使用 9.5Gb RAM。
我不明白为什么我的应用会占用这么多内存。
我设置了-Xmx6G
在 VisualVM 中,我看到堆空间大小为 188M
元空间使用141M
这可能有帮助
我读过一些文章说 Java 使用的 RAM 比堆空间多,因为有 JIT、堆空间、元空间、代码、ant 等。但 9.5Gb 是我的主要想法
已编辑:
- 是的,我的应用有时会出现异常 java.lang.OutOfMemoryError: Java heap space
【问题讨论】:
-
尝试在visualvm中玩垃圾收集,看看能释放多少。如果随着时间的推移缓慢增长,请使用 visualvm 中的分析器进行调查。
-
请确保您使用的是最新版本,JavaCV 1.5.5。
-
是的,我使用所有最新版本的库
-
确保您在任何具有此类方法的对象上调用
close()。如果没有足够快地释放任何内容,则可能会导致 Windows 上出现足够大的延迟,从而导致 OutOfMemoryError。
标签: java memory ffmpeg ram visualvm