Java虚拟机学习 - 垃圾收集器

在网上看到两篇不错的文章,由于博主原创,这里只贴地址,希望能帮助大家!

https://blog.csdn.net/java2000_wl/article/details/8030172

https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

这个图表很重要!!!

 

另外补充一下,查看了一些elasticsearch进程的启动参数

-XX:CMSInitiatingOccupancyFraction=75  -XX:+UseCMSInitiatingOccupancyOnly -XX:+AlwaysPreTouch

    前两个设置配合使用,一般用于『降低CMS GC频率』的需求

   -XX:CMSInitiatingOccupancyFraction=75 是指设定CMS在对内存占用率达到75%的时候开始GC(因为CMS会有浮动垃圾,所以一般都较早启动GC);

   -XX:+UseCMSInitiatingOccupancyOnly 只是用设定的回收阈值(上面指定的75%),如果不指定,JVM仅在第一次使用设定值,后续则自动调整;

   -XX:+AlwaysPreTouch  JAVA进程启动的时候,虽然我们可以为JVM指定合适的内存大小,但是这些内存操作系统并没有真正的分配给JVM,而是等JVM访问这些内存的时候,才真正分配,这样会造成以下问题。 

  1、GC的时候,新生代的对象要晋升到老年代的时候,需要内存,这个时候操作系统才真正分配内存,这样就会加大young gc的停顿时间;
  2、可能存在内存碎片的问题。

posted @ 2019-01-07 18:29  _Emotion丶小寳  阅读(108)  评论(0编辑  收藏  举报