JVM学习笔记1

--------------Java堆栈大小相关的JVM内存参数-----------------------
-Xms :设置Java堆栈的初始化大小
-Xmx :设置最大的java堆大小
-Xmn :设置Young区大小
-Xss :设置java线程堆栈大小
-XX:PermSize and MaxPermSize :设置持久带的大小
-XX:NewRatio :设置年轻代和老年代的比值
-XX:NewSize :设置年轻代的大小

-XX:SurvivorRatio=n :设置年轻代中E与俩个S去的比值

------------------打印垃圾回收器信息和设置垃圾回收器(串行、并行、并发等行为的收集器)-------
-verbose:gc :记录GC运行以及运行时间,一般用来查看GC是否有瓶颈
-XX:+PrintGCDetails :记录GC运行时的详细数据信息,包括新生占用的内存大小及消耗时间
-XX:-PrintGCTimeStamps :打印收集的时间戳
-XX:+UseParallelGC :使用并行垃圾收集器
-XX:-UseConcMarkSweepGC :使用并发标志扫描收集器
-XX:-UseSerialGC :使用串行垃圾收集器
-Xloggc:filename :设置GC记录的文件
-XX:+UseGCLogFileRotation :启用GC日志文件的自动转储
-XX:GCLogFileSize=1M :控制GC日志文件的大小


1、根据实际事情调整新生代与幸存代的大小,幸存代指的是S0和S1

2、整个堆大小=年轻代大小 +年代大小 + 持久(永久)代大小。持久代一般固定大小为64m,所以增加年轻代就会减小老年代

3、年轻代 = 新生代+幸存代

4、官方推荐年轻代占堆的3/8  如:-Xmx24m -Xms24m  -Xmn10m 10/24约等于3/8

-XX:NewRatio=3:设置年轻代(包括Eden和两个Survivor区)与年老代的比值(除去持久代)。设置为3,则年轻代与年老代所占比值为1:3,年轻代占整个堆栈的1/4

5、官方推荐幸存代占新生代的1/10

-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6

6、在OOM(内存溢出)时,记得DUMP出堆,确保可以排查现场问题,设置如下

-Xmx20m -Xms5m -XX:+HeapDumpOnOutOfMemoryError 

-XX:HeapDumpPath=d:/error.dump

7、GC算法分为4种

  A、引用计数法:定期记录引用数,如果引用数为0,则清除,缺点,对于三个及以上的互相引用没法清除,如A引用B,B引用C,C引用A。自调情况要特别注意,需要有出口

  B、标记清除法:标记存活对象,然后清除这之外的对象

  C、标记压缩(整理)法:把存活的对象移动到一边,不存活对象移动的边界之外,然后清除边界之外的对象。多用于老年代GC

  D、复制算法:把内存分成一半,复制存活对象,然后清除原来的区域。缺点:比较占内存,一般垃圾比较多,内存比较少的情况不用。一般放在年轻代,年轻代对象生命短,而中长寿命的对象就少,复制不会占太多的内存,复制小部分的对象总比压缩旧域廉价。

8、JVM收集器种类

Serial 收集器,用于新生代,串行收集器,用复制算法

ParNew收集器,用于新生代,并行收集器,用复制算法

Parellel Scavenge 用于新生代,并行收集器,用复制算法,主要关注吞吐量,设置参数为-XX:UseParallelGC ,

-XX:ParallelGCThreans = 20 :设置并行线程数为20个,一般配置成CPU个数

-XX:MaxGCPauseMillis = 100 :设置每次年轻代垃圾回收的最长时间,如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值

Serial Old 用于老年代 ,串行收集器,用标记整理算法

Parallel Old 用于老年代,并行收集器,用标记整理算法,关注吞吐量,设置参数为-XX:+UseParallelOldGC

CMS 收集器,用于老年代,并行收集器,标记清除算法,并发收集。

 设置参数为:-XX:+UseConcMarkSweepGC

9、吞吐量优先的并行收集器

并行收集器主要以达到一定的吞吐量为目标,适用于科学技术后台处理。分为两种:

1)、并行收集器(-XX:+ UseParallelGC)在次要回收中使用多线程来执行,在主要回收中使用单线程执行;

2)、并行旧生代收集器(Parallet Old Collection)(XX:+UseParallelOldGC),在次要回收和主要回收都使用多线程,当年老区填满后会触发主要回收

10、相应时间优先并发收集器 

并发收集器主要保证系统的响应时间,减少垃圾收集的停顿时间。适用于应用服务器、电信领域。

CMS(Concurrent Mark Sweep)并发标记清理收集器

CMS(-XX:+UseConcMarkSweepGC)收集器在老年代使用专门收集那些在主要回收中不可能到达的年老对象。它与应用程序并发执行,在年老代保持一直有足够的空间以保证不会发生年轻代晋升失败。

部分摘抄自网络

参考地址:http://www.cnblogs.com/parryyang/p/5750146.html

具体见收藏:http://lib.youkuaiyun.com/simba_1986/chart/JVM




评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值