您的位置:首页 > 运维架构 > Tomcat

tomcat 内存调优日志 linux jvm 内存调优

2016-12-22 10:32 162 查看
1 为什么要自己设置内存

    答:为了更好的利用内存,减少不必要的浪费。

          有一个项目 service,没配置,我服务器内存16G,因为所有的项目都依赖这个项目,所以这个项目一般首先启动。

          以为他启动的时候内存比较多,所以他就乱来了。  old  老生代内存给配了1.7G(虽然我top的时候整个项目才占用了1.5,不知道1.7G在哪来的,可能是有虚拟内存吧)

         使用率只有3%,太TMD浪费了,还有持久化区居然400多M,这个项目128M足够,为了靠谱我打算给他配200m。


 jmap –heap pid



         由现在运行状况来看,eden 新生代伊甸园 给他配个600m 即可 from space 和 to  space 各  100m    这两个区域是执行GC的时候使用)。

        http://www.cnblogs.com/zxf330301/articles/5252728.html 可以参考这个文章了解GC详情

        -Xmn800m(新生代一共多少---对XX:newSize、-XX:MaxnewSize两个参数的同时配置) -XX:SurvivorRatio:6
 (算法为 800m/(设置的值+2) *  6 = 600m  伊甸园区,然后from 和to各占用1)

          old给他200M即可。持久区一共200m.  --- 一般总有引用GC(死神)老杀不死的内存会进入old区, 并且 一上来分配连续的特别大的 内存 比如大数组 会直接分配到old区

 

            持久区200m   --  class的信息,static findl 引用的都会放在这里。                         

          -XX:PermSize=200M

             XX:MaxPermSize200M

           最后最大内存= 200m 持久+800m新生代+200m老年代 = 1.2G

         -Xms1200m -Xmx1200m 

         

      综上

                  new的比较多的给新生代多些内存。

                  arraylist 和数组 用的多的多给点old

                  static 和 类(包含引用的jar)比较多的,多给点 Perm

 

  弄完了之后old居然是400m,我在看看其他资料。。。别的都正常

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: