【发布时间】:2017-11-21 10:05:11
【问题描述】:
我有一个程序,它基本上从磁盘读取许多文件(混合 PDF 通常低于 10 MB + XML 大小 Kb),然后一次将它们上传到旧系统中。周末去的时候我让它在visualvm下运行,今天早上我回到一个图表,显示在程序运行的小时内堆使用情况相当不均匀。随着时间的推移,我预计堆使用量大致相同。
我正在寻找对此的解释。这是在 Ubuntu 17.04(桌面,而不是服务器)下使用 64 位 Oracle JVM,在 4 核 i5-2400(无超线程)上具有 32 GB RAM。该程序本质上是单线程的,使用了大约 50% 的内核,并且需要预期的时间来运行。
我了解,如果内存未完全使用,它会随着时间的推移而释放。我不明白使用量会随着时间的推移而下降,因为负载应该非常均匀分布。由于系统处于空闲状态,我是否看到了 CPU 节流的结果?是否有一些 JVM 优化启动?
【问题讨论】:
标签: java garbage-collection jvm heap-memory visualvm