`

Java 5 版本以上(SUN JVM)GC参数化调整大全

阅读更多

今天终于有所斩获,发现了Sun Hotspot JVM GC最全的参数调整列表:

 

http://blogs.sun.com/watt/resource/jvm-options-list.html

http://www.cnblogs.com/totti19841106/archive/2009/01/12/1374274.html

 

有关JVM默认值的参考资料如下:

https://gist.github.com/827140

http://hg.openjdk.java.net/jdk6/jdk6/hotspot/file/tip/src/share/vm/runtime/globals.hpp

 

Java 5以上版本(包含Java 5)GC的调整参数包含以下内容:

 

1.虚拟机GC性能调整工具参数:

 

–XX:+PrintGCDetails:

–XX:+PrintGCTimeStamps:

-XX:-DisableExplicitGC

-XX:+UseGCOverheadLimit

-XX:+StringCache

-XX:LargePageSizeInBytes=4m

-Xnoclassgc

-XX:MaxTenuringThreshold=<n>

指定一个 object 在经历了 n young gc 后转移到 old generation , linux64 java6 下默认值是 15, 此参数对于 throughput collector 无效 , :-XX:MaxTenuringThreshold=31

-XX:+UseFastAccessorMethods

get,set 方法转成本地代码

-XX:+PrintGCApplicationStoppedTime

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

Total time for which application threads were stopped: 0.0225920 seconds

-Xmn<n>                       

指定 jvm New Generation 的大小 , :-Xmn256m。 这个参数很影响性能, 如果你的程序需要比较多的临时内存, 建议设置到512M, 如果用的少, 尽量降低这个数值, 一般来说128/256足以使用了。

-Xss<n>                       

指定线程桟大小 , :-Xss128k, 一般来说,webx框架下的应用需要256K。 如果你的程序有大规模的递归行为, 请考虑设置到512K/1M。 这个需要全面的测试才能知道。 不过, 256K已经很大了。 这个参数对性能的影响比较大的。

 

-XX:PretenureSizeThreshold =<value>:当对象大于该值就直接分配到堆的 ‘老生代’ 区域


2.GC的关键选项参数:

 

2.1堆和代的大小调整参数

 

Option Default Description
-Xms<n> Initial size, in bytes, of the heap.
–Xmx<n> Maximum size, in bytes, of the heap.
–XX:MinHeapFreeRatio=minimum
and
–XX:MaxHeapFreeRatio=maximum
40 (min)
70 (max)
Target range for the proportion of free space to
total heap size. These are applied per generation.
For example, if minimum is 30 and the percent of
free space in a generation falls below 30%, the size
of the generation is expanded so as to have 30% of
the space free. Similarly, if maximum is 60 and the
percent of free space exceeds 60%, the size of the
generation is shrunk so as to have only 60% of the
space free.
–XX:NewSize=n Default initial size of the new (young) generation
in bytes.
–XX:NewRatio=n 2 on client JVM,
8 on server JVM
Ratio between the young and old generations. For
example, if n is 3, then the ratio is 1:3 and the
combined size of Eden and the survivor spaces is
one fourth of the total size of the young and old
generations.
–XX:SurvivorRatio=n 32 Ratio between each survivor space and Eden. For
example, if n is 7, each survivor space is one–ninth
of the young generation (not one–eighth, because
there are two survivor spaces).
–XX:MaxPermSize=n Platform–dependent Maximum size of the permanent generation.

 

2.3垃圾回收器选择参数

 

 

 

Option Garbage Collector Selected
–XX:+UseSerialGC 串行回收器
–XX:+UseParallelGC 并行回收器
–XX:+UseParallelOldGC Parallel compacting
–XX:+UseConcMarkSweepGC Concurrent mark–sweep (CMS)


2.4并行(Java5 以及以上版本-Server 模式默认的垃圾回收器)和并行压缩垃圾回收器的GC调整参数

Option Default Description
–XX:ParallelGCThreads=n The number of CPUs Number of garbage collector threads.
–XX:MaxGCPauseMillis=n No default Indicates to the collector that pause times of n
milliseconds or less are desired.
–XX:GCTimeRatio=n 99 Number that sets a goal that 1/(1+n) of the total time
be spent on garbage collection.

 

-XX:YoungGenerationSizeIncrement= <Y>
-XX:TenuredGenerationSizeIncrement=<T>
-XX:AdaptiveSizeDecrementScaleFactor=<D>

2.5 CMS垃圾回收器的GC调整参数

 

Option Default Description
–XX:+CMSIncrementalMode Disabled Enables a mode in which the concurrent phases are done
incrementally, periodically stopping the concurrent phase
to yield back the processor to the application.
–XX:+CMSIncrementalPacing Disabled Enables automatic control of the amount of work the CMS
collector is allowed to do before giving up the processor,
based on application behavior.
–XX:ParallelGCThreads=n The number of CPUs Number of garbage collector threads for the parallel
young generation collections and for the parallel parts of
the old generation collections.

 

补充参数:

-XX:CMSInitiatingOccupancyFraction

-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled

-XX:+UseCMSInitiatingOccupancyOnly

指示只有在 old generation 在使用了初始化的比例后 concurrent collector 启动收集

 

http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp

http://www.md.pp.ru/~eu/jdk6options.html

 

分享到:
评论

相关推荐

    Sun JVM原理与内存管理

    ### Sun JVM原理与内存管理 #### 一、Sun JDK 1.6 GC (Garbage Collector) Sun JDK 1.6 的垃圾收集器(GC)是其内存管理的关键组成部分,它负责自动地回收不再使用的对象所占用的内存。本文将详细介绍Sun JDK 1.6 GC...

    jvm gc jvm调优 查看工具

    Java虚拟机(JVM)是Java程序运行的基础,它的核心功能之一是垃圾收集(Garbage Collection, GC),这是Java语言的一大优势,但也因为其复杂性成为性能优化的关键环节。JVM调优通常涉及到内存配置、GC策略选择以及...

    jvm工具、参数调优&调试技巧

    以上介绍的各种JVM工具和参数对于Java开发人员来说是非常重要的,它们能够帮助我们更好地理解和管理JVM的行为,从而提高应用程序的性能和稳定性。在实际应用中,根据具体情况选择合适的工具和参数进行配置和调优是...

    com-sun-tools-visualvm-modules-visualgc.zip

    理解并有效利用VisualGC插件,开发者可以更好地调整JVM参数,例如设置合适的堆大小、选择合适的GC算法、优化对象分配策略等,从而提高应用的性能和稳定性。在实际操作中,我们需要结合应用的业务特点和负载情况,...

    Java_GC垃圾回收调优指南

    3. **其他调优参数**:除了上述基础设置外,还有许多其他参数可用于进一步优化GC行为,例如调整新生代和老年代的比例、选择特定的垃圾回收算法等。 #### 32位与64位系统的堆大小差异 - 对于32位进程模型,进程的...

    GCViewer,Tagtraum Industries的GCviewer之叉。tagtraum在2008年停止了开发,我的目标是改进对sun/oracle的java 1.6+垃圾收集器日志(包括g1收集器)的支持。.zip

    GCViewer是一款用于分析Java应用程序垃圾收集(Garbage Collection, GC)日志的开源工具,源自Tagtraum Industries的项目,并且在原作者停止开发后由其他人接手并继续更新,以支持Sun/Oracle Java 1.6及更高版本的...

    JVM优化方案

    Java虚拟机(JVM)是Java程序运行的基础,它提供了执行字节码的环境。不同公司根据JVM规范实现了自己的JRE(Java运行环境),如Oracle的Hotspot JDK、IBM的JDK、阿里巴巴的淘宝JDK等。Oracle通过收购Sun和BEA,将...

    com-sun-tools-visualvm-modules-visualgc.rar

    - 基于VisualGC提供的数据,开发者可以调整JVM参数,例如增大堆内存、调整新生代和老年代的比例,或者优化GC策略,以达到更高效的内存使用和减少垃圾收集的频率。 5. **使用方法**: - 首先,确保安装了VisualVM...

    JVM历史发展和内存回收笔记.rar

    5. **Java SE 5/6**:这两个版本引入了泛型、枚举、可变参数等新特性,并对JVM进行了进一步优化。 6. **Java SE 7/8**:JVM在这些版本中引入了 Lambda 表达式、默认方法、类型推断等特性,以及G1垃圾收集器,增强了...

    visualgc插件离线安装包

    这些信息对于调优JVM参数,减少不必要的GC暂停,提升应用性能至关重要。 总的来说,VisualGC插件是VisualVM中不可或缺的一部分,它为开发者提供了深入洞察JVM内存管理的能力。掌握它的安装和使用,能够极大地提高...

    com-sun-tools-visualvm-visualgc.zip

    4. **垃圾收集器配置**:提供对JVM垃圾收集器参数的查看和修改功能,方便开发者根据应用需求调整GC策略。 5. **类加载信息**:显示已加载类的数量和信息,有助于理解类加载过程和内存占用。 6. **线程分析**:结合...

    java查看sun包源码-monitor:java生产环境内存调优(包括jvm参数类型,JVM的参数类型jinfo&jps(参数和进程查看)j

    java查看sun包源码 主要内容包括 :blue_heart: :blue_heart: :blue_heart: :blue_heart: :blue_heart: :blue_heart: jvm参数类型:alien: jinfo & jps(参数和进程查看):alien: jstat(类加载、垃圾收集、JIT 编译):...

    从 0 开始带你成为JVM实战高手【完整版】

    - 基于实际情况调整JVM参数,如`-Xms`、`-Xmx`控制堆内存大小等。 4. **并发编程基础** - Java内存模型介绍:主内存与工作内存的概念。 - 锁的实现原理:偏向锁、轻量级锁、重量级锁的升级过程。 - 并发工具类...

    com-sun-tools-visualvm-modules-visualgc-2023.nbm.zip

    2. **调整参数**:根据监控结果,调整JVM的垃圾收集器设置,如选择不同的GC策略,优化GC阈值等。 3. **性能调优**:结合其他VisualVM模块,如CPU和线程分析,全面优化应用程序的性能。 为了启用VisualGC插件,首先...

    优秀Java程序员必须了解的GC工作原理

    Sun JDK的HotSpot JVM提供了对增量式GC的支持,可以通过`-Xincgc`参数启用。HotSpot JVM的增量式GC采用Train算法,根据对象的使用频率和相关性将它们分组,并优先回收最老的对象,从而确保程序的连续运行。 `...

    JVM深入理解及调优.ppt

    随着Oracle对Sun的收购,Java发展进入新的阶段,包括JDK 9的模块化和JDK 11的ZGC等。 2. **JVM内存模型**: JVM内存分为多个区域:方法区(Method Area)、堆区(Heap Area)、虚拟机栈(JVM Stacks)、本地方法栈...

    JVM的那些事.pptx

    ### JVM的核心概念与工作机制 #### 一、Java编译过程概览 在Java开发中,源代码文件(`.java`)被编译成...以上参数对于理解Java程序在JVM上的执行机制至关重要,合理地设置这些参数能够显著提升程序的性能和稳定性。

    JVM内存问题最佳实践

    - **IBM Java虚拟机**:与Sun JDK兼容,但启动参数的写法风格有所不同,主要用于WebSphere等运行在AIX上的中间件服务器。 - **开源Java虚拟机**:尽管与Sun JDK兼容,但在生产环境中使用较少。 #### 二、Java内存...

Global site tag (gtag.js) - Google Analytics