我们为java应用程序配置了新服务器,并部署了一个在java上运行的应用程序。一周后我们收到错误 java.lang.OutOfMemoryError:超出GC开销限制,我们重新开始服务,并且在我们再次收到相同错误一周之后它再次正常工作。
此服务在另一台服务器中运行较早,该服务器的配置少于新服务器。
我们从未在旧服务器中遇到此错误。
此服务使用随软件提供的jre运行。
"%JAVA_HOME%\ BIN \的java" -server -Xms256M -Xmx256M,
增加Xms和XmX的值是否会解决GC Overhead限制问题。
答案 0 :(得分:3)
要回答您问题中的实际问题,是的,增加这些值将暂时解决GC Overhead问题。但是,不是每周看一次神秘错误,而是每月一次或每隔一个月看一次。
这种类型的行为令人难以置信地表明java中存在内存泄漏。 "但我认为你在java中没有内存泄漏?"错误。在java中创建c / c ++类型内存泄漏有点困难,但它肯定可能在java中复制行为和相同的不幸影响。见Creating a memory leak with Java 有关这方面的更多信息。
我强烈建议重新评估该程序中导致GC开销限制的情况,并在那里解决。