Java垃圾回收算法
- 标记-清除算法
- 复制算法
- 标记-整理算法
- 分代收集算法
Java垃圾收集器
1.Serial收集器
2.ParNew收集器
3.并行收集器
4.SerialOld 收集器
5.Parallel Old收集器
6.CMS收集器
7.G1收集器
JVM参数设置
1.堆内存大小参数
-Xmx:最大堆大小 物理内存的1/4 默认空余堆内存大于70%,JVM较少-Xms限制
-Xms:初始堆大小 物理内存的1/64 默认空余堆内存小于40%,JVM增大直到-Xmx的最大限制
-Xmn:新生代大小 eden+2*survivor空间
-Xss:每个线程的堆栈大小 减小这个值能生成更多的线程
-XX:MaxPermSize 设置老年代最大值 物理内存的1/4
The maximum amount of heap to use. Default is left to JVM default.
export HBASE_HEAPSIZE=1G
指定堆内存大小,一般不超过实际物理内存的1/2
2.CMS相关参数
1. -XX:+UseConcMarkSweepGC 使用CMS 垃圾收集器
2.-XX:+UseParNewGC 新生代采用并行GC策略
3.-XX:CMSFullGCsBeforeCompaction 多少次FullGC后进行内存压缩
4.-XX:+CMSParallelRemarkEnabled 降低标记停顿
5.-XX:UseCMSCompactAtFullCollection 在FullGC的时候,对老年代的压缩
6.-XX:+UseCMSInitiatingOccupancyOnly 使用手动定义初始化定义开始CMS收集
7.-XX:CMSInitiatingOccupancyFraction 使用CMS作为垃圾收集,使用N%后开始
8.-XX:CMSInitiatingPermOccupancyFraction 设置PermGen使用到达多少比率时触发
9.-XX:CMSIncrementalMode 设置为增量模式 用于单CPU的情况
在hbase-env.sh文件中设置
# Extra Java runtime options.
# Below are what we set by default. May only work with SUN JVM.
# For more on why as well as other possible settings,
# see http://hbase.apache.org/book.html#performance
export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC"
3.辅助参数
export HBASE_OPTS="$HBASE_OPTS -verbose:gc -XX:+PrintGCDetails
-XX:+PrintGCTimeStamps -Xloggc:${HBASE_HOME}/logs/gc-hbase.log"
-verbose:gc:指定输出虚拟机中的详细信息
-XX:+PrintGCDetails:指定输出格式
-XX:+PrintGCTimeStamps:表示输出GC的时间
-XXloggc:指定GC输出日志的输出路径