JVM配置参数说明.docx

上传人:b****5 文档编号:6295566 上传时间:2023-01-05 格式:DOCX 页数:9 大小:19.26KB
下载 相关 举报
JVM配置参数说明.docx_第1页
第1页 / 共9页
JVM配置参数说明.docx_第2页
第2页 / 共9页
JVM配置参数说明.docx_第3页
第3页 / 共9页
JVM配置参数说明.docx_第4页
第4页 / 共9页
JVM配置参数说明.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

JVM配置参数说明.docx

《JVM配置参数说明.docx》由会员分享,可在线阅读,更多相关《JVM配置参数说明.docx(9页珍藏版)》请在冰豆网上搜索。

JVM配置参数说明.docx

JVM配置参数说明

JVM配置参数说明,参考N多文章和一些书籍总结如下:

      参数

说明

默认值

生产环境约定

内存管理策略

-Xms/-Xmx

定义YOUNG+OLD段的总尺寸,ms为JVM启动时YOUNG+OLD的内存大小;mx为最大可占用的YOUNG+OLD内存大小。

默认是物理内存的1/64但小于1G。

在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。

-Xmn

设置young generation的内存大小。

整个堆大小=年轻代大小+年老代大小。

所以增大年轻代后,将会减小年老代大小。

此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。

 

-XX:

PermSize/-XX:

MaxPermSize

定义Perm区的尺寸,PermSize为JVM启动时Perm的内存大小;MaxPermSize为最大可占用的Perm内存大小。

这个参数需要看实际情况。

可以通过jmap命令看看到底需要多少。

在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。

-XX:

SurvivorRaito

设置YOUNG段中Eden区与Survivor区的比值,如此值为4,则Eden为4/6,两个Survivor分别为1/6。

-XX:

SurvivorRatio=65536,-XX:

MaxTenuringThreshold=0就是去掉了救助空间;可以减少FullGC造成系统停顿,提高一定系统性能,新生代未对垃圾进行多次回收

 

-Xss

设置栈的大小。

JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K。

一般来说,web框架下的应用需要256K即可。

如果你的程序有大规模的递归行为,请考虑设置到512K/1M。

这个需要全面的测试才能知道。

不过,256K已经很大了。

这个参数对性能的影响比较大的。

在相同物理内存下,减小这个值能生成更多的线程。

但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。

-XX:

GCTimeRatio=

系统吞吐量,衡量GC所占比重

系统默认是99

如n=19则表示系统吞吐量为95% 19/(19+1)

-XX:

+UseAdaptiveSizePolicy

设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低响应时间或者收集频率等。

 

 

 

-XX:

+UseAdaptiveSizePolicy

-XX:

NewRaito

设置YOUNG与OLD段的比值。

在使用CMSGC的情况下此参数失效,如:

-XX:

NewRatio=2

 

-XX:

NewSize/-XX:

MaxNewSize

定义YOUNG段的尺寸,NewSize为JVM启动时YOUNG的内存大小;MaxNewSize为最大可占用的YOUNG内存大小。

默认是物理内存的1/4但小于1G。

在用户生产环境上一般将这两个值设为相同,以减少运行期间系统在内存申请上所花的开销。

-XX:

MaxGCPauseMillis

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

 

-XX:

MaxGCPauseMillis

-XX:

MinHeapFreeRatio=

指定jvmheap在使用率小于n的情况下,heap进行收缩,Xmx==Xms的情况下无效,如:

-XX:

MinHeapFreeRatio=30

 

 

-XX:

MaxHeapFreeRatio=

指定jvmheap在使用率大于n的情况下,heap进行扩张,Xmx==Xms的情况下无效,如:

-XX:

MaxHeapFreeRatio=70

 

 

-XX:

LargePageSizeInBytes=

指定Javaheap的分页页面大小,如:

-XX:

LargePageSizeInBytes=128m

 

 

串行垃圾回收策略

-XX:

+UseSerialGC

设置串行收集器,较老版本JVM默认使用的GC方式,性能比较低

为单线程GC,也是默认的GC。

,该GC适用于单CPU机器

 

-XX:

MaxTenuringThreshold=

设置垃圾最大年龄。

指定一个object在经历了n次younggc后转移到oldgeneration区,在linux64的java6下默认值是15,此参数对于并行GC无效,如:

-XX:

MaxTenuringThreshold=31

如果设置为0的话,则新生对象不经过Survivor区,直接进入OLD段。

对于OLD对象比较多的应用,可以提高效率。

如果将此值设置为一个较大值,则新生对象会在Survivor区进行多次复制,这样可以增加对象的存活时间,增加在minorcollection及时回收的概率。

并行垃圾回收策略

-XX:

+UseParNewGC

指定在youngGeneration使用parallelcollector,是UseParallelGC的gc的升级版本,有更好的性能和优点,可以和CMSgc一起使用

 

 

-XX:

+UseParallelOldGC

配置年老代垃圾收集方式为并行收集。

JDK6.0支持对年老代并行收集。

 

 

-XX:

ParallelGCThreads

配置并行收集器的线程数,即:

同时多少个线程一起进行垃圾回收。

默认是物理processor的个数

此值最好配置与处理器数目相等。

-XX:

+UseParallelGC

选择垃圾收集器为并行收集器。

此配置仅对年轻代有效。

即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集,其升级版本为UseParNewGC性能会更好一些。

指定在young区使用parallelcollector,并行收集,暂停appthreads,同时启动多个垃圾回收thread,不能和CMSgc一起使用.系统吨吐量优先,但是会有较长长时间的apppause,后台系统任务可以使用此gc

 

并发垃圾回收策略

XX:

+UseConcMarkSweepGC

指定在OldGeneration使用ConcurrentLowPauseCollector,设置并发收集器

可与如下配合使用:

-XX:

ParallelGCThreads

-XX:

+UseParNewGC

适用于多CPU,并要求缩短因GC造成程序停滞的时间。

这种GC可以在Old区的回收同时,运行应用程序。

-XX:

+UseConcMarkSweepGC参数启动该GC。

-XX:

ParallelCMSThreads

指定启用并发回收的线程数目

CMS默认启动的回收线程数目是  (ParallelGCThreads+3)/4),其中ParallelGCThreads是年轻代的并行收集线程数

 

-XX:

+CMSPermGenSweepingEnabled

指定perm区启用CMS收集器

 

 

-XX:

+CMSClassUnloadingEnabled

通常配合上一项使用

 

 

-XX:

+CMSParallelRemarkEnabled

在使用UseParNewGC的情况下,尽量减少mark的时间

 

 

XX:

+CMSScavengeBeforeRemark

如何mark时间还是过长,可以通过此选项进一步加强,在mark之前进行一次minorGC

 

 

-XX:

+UseCMSCompactAtFullCollection

在FULLGC的时候,压缩内存,CMS是不会移动内存的,因此,这个非常容易产生碎片,导致内存不够用,因此,内存的压缩这个时候就会被启用。

增加这个参数是个好习惯。

如果启用本项,系统默认每次FullGC,都会进行内存压缩

这个配置是把双刃剑,在一定程度上能减少FullGC,但是也会影响一点性能,本操作执行时应用会暂停

-XX:

CMSFullGCsBeforeCompaction=

用来指定多少次FullGC才压缩内存,通常配合-XX:

+UseCMSCompactAtFullCollection使用

如:

-XX:

CMSFullGCsBeforeCompaction=5

 

-XX:

CMSInitiatingOccupancyFraction=

指示在oldgeneration在使用了n%的比例后,启动cmsGC,较低版本JVM默认值是68,jdk6默认是92如:

-XX:

CMSInitiatingOccupancyFraction=70

68/92

基本上满足(Xmx-Xmn)*(100-CMSInitiatingOccupancyFraction)/100>=Xmn就不会出现promotionfailed

统计垃圾回收信息

-XX:

+PrintGC

-Xloggc:

filename

 

垃圾回收统计信息

如在环境加上如下参数用于分析JVM表现

-verbose:

gc-XX:

+PrintGCTimeStamps-XX:

+PrintGCDetails-Xloggc:

/home/test/logs/gc.log

 

-XX:

+PrintGCDetails

打应垃圾收集的情况

如:

[GC15610.466:

[ParNew:

229689K->20221K(235968K),0.0194460secs]1159829K->953935K(2070976K),0.0196420secs]

 

-XX:

+PrintGCTimeStamps

打应垃圾收集的时间情况

如:

[Times:

user=0.09sys=0.00,real=0.02secs]

 

-XX:

+PrintGCApplicationStoppedTime

打应垃圾收集时,系统的停顿时间

如:

Totaltimeforwhichapplicationthreadswerestopped:

0.0225920seconds

 

其他

-XX:

+DisableExplicitGC

禁止java程序中的fullgc,如System.gc()的调用.最好加上么,防止程序在代码里误用了。

对性能造成冲击。

 

常用的垃圾回收机制介绍

名称

实现原理

标记-清除收集器

这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并释放它们的内存。

这种收集器一般使用单线程工作并停止其他操作

标记-压缩收集器

有时也叫标记-清除-压缩收集器,与标记-清除收集器有相同的标记阶段。

在第二阶段,则把标记对象复制到堆栈的新域中以便压缩堆栈。

这种收集器也停止其他操作

复制收集器

这种收集器将堆栈分为两个域,常称为半空间。

每次仅使用一半的空间,jvm生成的新对象则放在另一半空间中。

gc运行时,它把可到达对象复制到另一半空间,从而压缩了堆栈。

这种方法适用于短生存期的对象,持续复制长生存期的对象则导致效率降低。

增量收集器

增量收集器把堆栈分为多个域,每次仅从一个域收集垃圾。

这会造成较小的应用程序中断。

分代收集器

这种收集器把堆栈分为两个或多个域,用以存放不同寿命的对象。

jvm生成的新对象一般放在其中的某个域中。

过一段时间,继续存在的对象将获得使用期并转入更长寿命的域中。

分代收集器对不同的域使用不同的算法以优化性能。

并发收集器

并发收集器与应用程序同时运行。

这些收集器在某点上(比如压缩时)一般都不得不停止其他操作以完成特定的任务,但是因为其他应用程序可进行其他的后台操作,所以中断其他处理的实际时间大大降低。

并行收集器

并行收集器使用某种传统的算法并使用多线程并行的执行它们的工作。

在多cpu机器上使用多线程技术可以显著的提高java应用程序的可扩展性。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1