java内存参数说明一

Young(Nursery)Heap:年轻代
  究表明大部分对象都是朝生暮死,随生随灭的。所以对于年轻代在GC时都采取复制收集算法
  Young的默认值为4M,随堆内存增大,约为1/15,JVM会根据情况动态管理其大小变化。
  Young里面又分为3 个区域,一个Eden,所有新建对象都会存在于该区,两个Survivor区,用来实施复制算法。
  -XX:NewRatio= 参数可以设置Young与Old的大小比例,-server时默认为1:2,可以用 -Xmn硬性规定其大小,有文档推荐设为Heap总大小的1/4
  -XX:SurvivorRatio= 参数可以设置Eden与Survivor的比例,默认为32。Survivio大了会浪费,小了的话,会使一些年轻对象潜逃到老人区,引起老人区的不安,但这个    参数

对性能并不太重要
  如:-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的大小比值。设置为4,则两个Survivor区与一个Eden区的比值为2:4,一个Survivor区占整个年轻代的1/6


Old(Tenured):年老代
  老人区使用标记整理算法。因为老人区的对象都没那么容易死的,采用复制算法就要反复的复制对象,很不合算,只好采用标记清理算法,但标记清理算法其实也不轻松   ,每

次都要遍历区域内所有对象。
   -XX:MaxTenuringThreshold= 设置熬过年轻代多少次收集后移入老人区,CMS中默认为0,熬过第一次GC就转入。

Permanent:持久代
  装载Class信息等基础数据,默认64M,如果是类很多很多的服务程序,需要加大其设置 -XX:MaxPermSize=,否则它满了之后会引起fullgc()或Out of Memory。 注意     

Spring,Hibernate这类喜欢AOP动态生成类的框架需要更多的持久代内存。一般情况下,持久代是不会进行GC的,
  除非通过 -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled进行强制设置。

 

 

年轻代的GC叫young GC,有时候也叫 minor GC。年老代或者永久代的GC,叫 full GC,也叫major GC。

-Xnoclassgc禁用类垃圾回收,性能会高一点;
-XX:+DisableExplicitGC 禁止 java 程序中的 full gc, 如 System.gc() 的调用. 最好加上么, 防止程序在代码里误用了。对性能造成冲击。
-XX:-UseSerialGC   启用串行GC
-XX:-UseParallelGC 新生代启用并行GC,不能和CMS gc 一起使用 . 系统吨吐量优先 , 但是会有较长长时间的 app pause, 后台系统任务可以使用此gc
-XX:+UseParNewGC   新生代启用并行GC,是UseParallelGC 的 gc 的升级版本,有更好的性能或者优点,可以和 CMS gc 一起使
     -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
                   -XX:ParallelGCThreads=20 设置并行线程数,默认是物理processor的个数
     -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
                   -XX:+CMSParallelRemarkEnabled 在使用 UseParNewGC 的情况下 , 尽量减少 mark 的时间


-XX:-UseParallelOldGC 对年老代启动带有压缩功能的并行GC,JDK6.0支持对年老代并行收集,一般和老版UseParallelGC配合使用,吞吐量优先。

-XX:-UseConcMarkSweepGC 对老生代采用并发标记交换算法进行GC ,没有压缩功能,带来内存碎片,漂流垃圾。
                      (Concurrent mark sweep)CMS并不在年老区满了之后才开始GC,他需要提前进行GC,用以满足在GC同时需要额外的内存。
                      -XX:CMSInitiatingOccupancyFraction=n 当年老区超过初始容量的n%时,触发GC
                      -XX:+CMSIncreamentalMode,并发的额外模式,添加这个参数可以防止在并发标记的时候,GC线程长期占用CPU,CMS可以把并发标记的时候停下来  

              ,把cpu让给应用程序。这个功能对于机器的CPU个数少,但又想降低暂停时间的应用来说,非常有用。
                     -XX:+UseCMSCompactAtFullCollection 打开对年老代的压缩。可能会影响性能,但是可以消除碎片
                     -XX:CMSFullGCsBeforeCompaction=5   此值设置运行多少次GC以后对内存空间进行压缩、整理。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值