完整堆内存会导致服务器缓慢 - 启用垃圾回收? (封闭)

时间:2015-06-17 15:41:29

标签: java memory garbage-collection

我有一个带有nginx,apache和tomcat7的Web服务器。 在这个服务器上运行一个java程序。 我也可以用putty访问服务器。

通常每天一次服务器上的堆内存已满(CMS Old Gen - 堆内存占100%)并且程序变得非常慢。然后我登录服务器并重启tomcat7服务。堆内存被清除,程序再次正常运行。

所以我有两个问题。

  1. 我是否必须从程序或服务器运行垃圾收集?
  2. 当垃圾收集在服务器上时,如何启用它?
  3. 我不知道这对你来说是否足够了。如果您需要什么,请告诉我。

    亲切的问候

    编辑:

    Memory Pool     Type         Maximum
    CMS Old Gen     Heap Memory  316.81 MB
    Eden Space      Heap Memory  66.56 MB
    Survivor Space  Heap Memory  8.31 MB
    Total                        391.68 MB
    

    所以这是Apache Manager的摘录(遗憾的是我还不能发布任何图片)。当CMS Old Gen处于100%状态时,程序开始运行的速度非常慢。 在应用程序的本地版本上,我启动了JVM Monitor以查看是否存在任何泄漏。显然垃圾收集器在那里正常运行,但在服务器上运行不正确。

    有什么建议吗?

    所以我增加了堆大小,我现在正试图关闭泄漏。 非常感谢你的帮助。见你=)

1 个答案:

答案 0 :(得分:2)

垃圾收集器默认运行。如果要确保它正在运行,可以使用-Xloggc:{file}选项启动jvm,以获取有关其活动的一些调试信息。

如果你需要重新启动tomcat来清理堆,你的应用程序可能会有内存泄漏,正如评论已经指出的那样。