初始和最大堆内存大小
-Xms and -Xmx (or: -XX:InitialHeapSize and -XX:MaxHeapSize)
-Xms和-Xmx可以说是最流行的JVM参数,它们可以允许我们指定JVM的初始和最大堆内存大小。一般来说,这两个参数的数值单位是Byte,但同时它们也支持使用速记符号,比如“k”或者“K”代表“kilo”,“m”或者“M”代表“mega”,“g”或者“G”代表“giga”。举个例子,下面的命令启动了一个初始化堆内存为128M,最大堆内存为2G,名叫“MyApp”的Java应用程序。
java -Xms128m -Xmx2g MyApp
垃圾收集器
默认HotSpot JVM使用的是并行收集器。
激活 CMS 收集器-XX:+UseConcMarkSweepGC
简单介绍一下几种垃圾收集器的原理
串行收集器(Serial收集器)
单线程去清理垃圾,停顿时间比较长
新生代复制算法、老年代标记-压缩
stop the world
参数控制:-XX:+UseSerialGC 串行收集器
ParNew收集器
并行收集器,是串行收集器的多线程版本
CMS收集器
CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。互联网站或B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。
关键在他的并发上面
基于“标记-清除”算法实现的,它的运作过程相对于前面几种收集器来说要更复杂一些,整个过程分为4个步骤,包括:
- 初始标记(CMS initial mark)
- 并发标记(CMS concurrent mark)
- 重新标记(CMS remark)
- 并发清除(CMS concurrent sweep)
其中初始标记、重新标记这两个步骤仍然需要“Stop The World”。
优点: 并发收集、低停顿
缺点: 产生大量空间碎片、并发阶段会降低吞吐量
-XX:+UseConcMarkSweepGC
该标志首先是激活CMS收集器。默认HotSpot JVM使用的是并行收集器。
-Xms=1024m
-Xmx=1024m
-XX:MaxPermSize=128m
-Dspring.profiles.active=dev
-XX:+UseConcMarkSweepGC 使用 CMS 垃圾收集器
-XX:CMSFullGCsBeforeCompaction=10 在 FullGC 十次后内存整理
-XX:CMSInitiatingOccupancyFraction=70
-XX:-UseGCOverheadLimit
-XX:+PrintGC
-XX:+PrintGCDetails
-Xloggc:/home/admin/logs/app_gc.log
-Dcom.sun.management.jmxremote.port=8999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dmetro-system
网友评论