×

jvm

96
lucode
2018.02.13 02:26* 字数 526

初始和最大堆内存大小

-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
java
Web note ad 1