我们为 CF9 服务器设置了 JVM,以分配最大 2GB 的堆空间。通常,它只分配大约 750MB 到 1GB,而我们实际上只使用了大约 500MB。
一个流氓脚本刚刚被触发,它最终占用了堆空间,因此 JVM 分配了完整的 2GB 限制。现在,我们回到了正常速度,只使用了分配的 2GB 中的 500MB,我们的服务器现在的内存使用率为 90%。
当 JVM 不再需要分配那么多空间时,我们是否可以使用任何设置来缩小 JVM 的最大堆空间?或者,这会一直保持这种状态,直到下次重新启动?只是想知道,因为我们在服务器上只剩下 10% 的内存用于“摆动”空间......
谢谢!
编辑:
只是为了澄清一点。我们通过设置 JVM 参数“-Xms750m”将初始堆大小设置为 750MB。我们的最大堆大小由 JVM 参数“-Xmx2048M”设置。在脚本运行之前,我们分配的堆大小约为 1GB。在这 1GB 中,我们平均只使用了 500MB。脚本运行后,堆被推到了极限,所以现在有 2GB 的预分配堆空间,我们再次平均只使用了 500MB。
因此,这使 Windows 记录了 90% 或更多的内存使用情况。JVM 可能至少可以释放GB 或更多,因为它从未使用过,但是,我们不知道如何强制这种情况发生,或者是否有某种 JVM 设置来执行此操作自动地。