V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
mutelog
V2EX  ›  程序员

PS Survivor Space 几乎占满

  •  
  •   mutelog · 2017-05-09 13:54:49 +08:00 · 8489 次点击
    这是一个创建于 2757 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Tomcat 6 + JDK 1.6 Server Mode

    使用 jconsole 查看内存占用情况,发现 Survivor Space 几乎占满,Tomcat 响应缓慢。

    当前 Tomcat 的虚拟机参数设置如下:

    set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

    请问应当怎样调整虚拟机参数?

    2 条回复    2017-05-09 14:38:33 +08:00
    hand515
        1
    hand515  
       2017-05-09 14:26:21 +08:00
    S0 和 S1 不是经常满的吗
    hyperdak
        2
    hyperdak  
       2017-05-09 14:38:33 +08:00   ❤️ 1
    jvm 参数里面缺少了对新生代的配置,可以通过 `-Xmn` 加上。

    `Xms` 和 `Xmx` 都是设置成`Xmx` 的值,避免每次回收(因为初始空间小)之后又扩容.

    Survivor Space 是新生代复制回收算法的一个区,其中分为 S0 和 S1,每次回收是这样进行的:Eden+S0->S1,Eden 和 S0 中存活的对象会移动到 S1 中,回收完成时,S0 变空。然后下一轮就是 Eden+S1->S0。

    你可以使用 `jstat -gcutil pid 2000 2000` 来观察这个复制回收对新生代的影响。

    然后开头的 `-server` 现在没什么用了,x64 的 jdk 自动都已经只有 server 模式了。

    建议使用以下的参数:`-Xmx2g -Xms2g -Xmn512m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+UseParallelOldGC -Xloggc:/somewhere/somename.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution`

    这个设置将打印 gc 日志,可以使用 gceasy.io 来分析 gc 日志。

    ORA 官方介绍垃圾回收器和搭配的文章: https://blogs.oracle.com/jonthecollector/our-collectors
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5627 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 08:47 · PVG 16:47 · LAX 00:47 · JFK 03:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.