美文网首页
JAVA进程一开始没有占用指定内存?

JAVA进程一开始没有占用指定内存?

作者: 南岩飞雪 | 来源:发表于2019-03-28 15:19 被阅读0次

    问题

    • 明明指定了 Xms 和 Xmx 都是2048m,但是启动的时候并没有占用2个G


      image.png
    • 后来发现还有这么个JVM参数
      -XX:+AlwaysPreTouch

    • 具体的解释见链接

    JAVA进程启动的时候,虽然我们可以为JVM指定合适的内存大小,但是这些内存操作系统并没有真正的分配给JVM,而是等JVM访问这些内存的时候,才真正分配,这样会造成以下问题。
    1、GC的时候,新生代的对象要晋升到老年代的时候,需要内存,这个时候操作系统才真正分配内存,这样就会加大young gc的停顿时间;
    2、可能存在内存碎片的问题。
    可以在JVM启动的时候,配置-XX:+AlwaysPreTouch参数,
    这样JVM就会先访问所有分配给它的内存,让操作系统把内存真正的分配给JVM.后续JVM就可以顺畅的访问内存了。

    JVM调优-学习篇

    相关文章

      网友评论

          本文标题:JAVA进程一开始没有占用指定内存?

          本文链接:https://www.haomeiwen.com/subject/ntmqbqtx.html