在网上看到两篇不错的文章,由于博主原创,这里只贴地址,希望能帮助大家!
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、可能存在内存碎片的问题。
原文地址:https://www.cnblogs.com/1ning/p/10234883.html
时间: 2024-10-03 15:48:53