我们有一个运行许多 Jar 文件的遗留系统。每个 jar 文件都在单独的进程中运行。其中一些 jar 文件的内存使用量会激增。因此,它们的堆限制很高(~128MB),尽管在任何给定时刻,它们中的大多数都不使用该内存。
问题是,Java 没有释放内存的压力。由于垃圾收集器看不到大局,因此没有减少堆大小的压力。因此,每个进程分配了大约 100MB 的多余堆(大多数情况下它们需要不到 30MB)。
将此行为与许多 java 实例相乘,您就会遇到一个大问题。除了重写所有 jar 以在单个 JVM 中工作之外,是否有任何简单的解决方案?