小组Java
  • JVM 内存一般设成多大的?内存设多少一般怎么确定,有什么利弊?

    2016/09/01 文心雕码 4 评论  , 

我以前跑tomcat的JVM一般都设2G的内存,但是最近我看了一下Solr的服务器,JVM给了6G,通过-Xms6000M -Xmx6000M设置的。而且有人建议只要服务器有内存,JVM的内存还可以再给。

64位的JVM的内存是不是可以随便设?内存设多少一般怎么确定,有什么利弊?

1 收藏


直接登录
最新评论
  • micro 软件攻城狮 2016/09/01

    JVM内存分代模型的原理主要建立在不同对象的生存周期不同,因此主要关注业务类型大量的对象属于哪类对象,如何尽可能高效的收集内存,选择合适的GC收集器。

  • Dawn ship java+.net+web 2016/09/01

    -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:MaxNewSize=512m -XX:MaxPermSize=128m

  • LouisWang 程序员 2016/09/01

    这个没有一个固定值的。需要根据具体的业务来确定。

    内存不是越大越好,也不是越小越好。

    JVM的默认值已经适应大多数情况。

    如果你的业务生成的对象很多会进入老年代,生命周期非常长,建议内存稍大一点,同时将Full GC频率适当调小一点。这样可以节约频繁的GC的开销,这个性能提升还是很大的。

    如果你的业务生成的对象很多都是朝生夕灭,生命周期短暂,建议新生代和老年代内存比例可以适当调整,老年代小一点。Min GC会相对来说稍微频繁一点。但是尽量避免Full GC。因为这个对JVM性能影响比Min GC大很多。

    如果你们的业务对内存很敏感,上线前一半要做很多实验和测试来确定合适的内存大小。

     

  • Mini_Joker 想做自己喜欢事的Coder 2016/09/05

    虽然在64位的环境里,JVM的内存没有限制,但是不建议没有结合实际情况下就随便你设置JVM内存,往往设置过大的JVM内存时,整个JVM的GC策略、年轻带与老年带的比率也是要做相应的修改优化,这样才能发挥大内存的作用。