gpt4 book ai didi

java - 在 CentOS 中禁用 UseGCOverheadLimit

转载 作者:IT王子 更新时间:2023-10-29 01:09:26 25 4
gpt4 key购买 nike

我需要在我的 CentOS 服务器中禁用 GC 开销限制。这样做的原因是为了暂时防止java.lang.OutOfMemoryError: GC overhead limit exceeded异常。

但我对 Linux + Java 系统一窍不通,对如何运行此命令行一无所知:-XX:-UseGCOverheadLimit

最佳答案

您需要将其作为参数传递给 JVM。你说你在 Apache Tomcat 中托管一个网络应用程序。您可以将环境变量 CATALINA_OPTS 设置为等于 -XX:-UseGCOverheadLimit。如果将 tomcat 作为服务运行,则必须在实际启动 tomcat 的脚本中执行此操作,事实上,CentOS 的 Tomcat 脚本可能有一个 CATALINA_OPTS 变量,您可以将其添加到或设置。

也就是说,消除垃圾收集器因开销而抛出 OutOfMemoryError (OOME) 的能力可能无法解决问题。由于开销导致的 OOME 基本上意味着由于 GC 操作花费了大量时间,程序没有取得任何有用的进展。当可用内存非常低并且必须频繁进行大量完整的 GC 传递时,就会发生这种情况。如果您禁用该错误,程序可能会变得无响应,然后在未来某个未定义的点最终实际耗尽堆中的内存,这仍然会导致抛出 OOME 以获得堆空间而不是开销。

更好的解决方案是通过使用 -Xmx 参数(再次通过 CATALINA_OPTS 传入)来增加允许 Tomcat 使用的内存量。例如,-Xmx2g 会将最大堆设置为 2 GiB。

关于java - 在 CentOS 中禁用 UseGCOverheadLimit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com