我正在开发一个部署在 Glassfish 4 中的大型应用程序。我有一项工作是下载文件并将它们作为字节 [] 存储在数据库中。有很多小文件(如 5 Mb)。我遇到内存不足错误,因此我尝试使用较少数量的文件再次启动该作业,并开始使用 jVisualVM 对其进行监视并注意到这一点:
1:30 到 1:40 之间是正常的应用程序运行,我们可以看到一切看起来都符合预期。但是,当我在 1:40 之后开始工作时,使用的堆通常会被垃圾收集,所以会有很多尖峰......但是,堆大小 越来越小。我想这是内存不足错误的原因。但我不知道这意味着什么——降低堆大小是什么意思?