jvm优化

简介:

JVM常用参数

-XX:+<option> 启用选项
-XX:-<option>不启用选项
-XX:<option>=<number>
-XX:<option>=<string>
堆设置
-Xms :初始堆大小
-Xmx :最大堆大小
-Xmn:新生代大小。通常为 Xmx 的 1/3 或 1/4。新生代 = Eden + 2 个 Survivor 空间。实际可用空间为 = Eden + 1 个 Survivor,即 90%
-XX:NewSize=n :设置年轻代大小
-XX:NewRatio=n: 设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n :年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:PermSize=n 永久代(方法区)的初始大小
-XX:MaxPermSize=n :设置永久代大小
-Xss 设定栈容量;对于HotSpot来说,虽然-Xoss参数(设置本地方法栈大小)存在,但实际上是无效的,因为在HotSpot中并不区分虚拟机和本地方法栈。
-XX:PretenureSizeThreshold (该设置只对Serial和ParNew收集器生效) 可以设置进入老生代的大小限制
-XX:MaxTenuringThreshold=1(默认15)垃圾最大年龄 如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代. 对于年老代比较多的应用,可以提高效率.如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活 时间,增加在年轻代即被回收的概率
该参数只有在串行GC时才有效.
收集器设置
-XX:+UseSerialGC :设置串行收集器
-XX:+UseParallelGC :设置并行收集器
-XX:+UseParallelOldGC :设置并行年老代收集器
-XX:+UseConcMarkSweepGC :设置并发收集器
垃圾回收统计信息
-XX:+PrintHeapAtGC GC的heap详情
-XX:+PrintGCDetails GC详情
-XX:+PrintGCTimeStamps 打印GC时间信息
-XX:+PrintTenuringDistribution 打印年龄信息等
-XX:+HandlePromotionFailure 老年代分配担保(true or false)
-Xloggc:gc.log 指定日志的位置
并行收集器设置
-XX:ParallelGCThreads=n :设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n :设置并行收集最大暂停时间
-XX:GCTimeRatio=n :设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode :设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n :设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
其他
-XX:PermSize=10M和-XX:MaxPermSize=10M限制方法区大小。
-XX:MaxDirectMemorySize=10M指定DirectMemory(直接内存)容量,如果不指定,则默认与JAVA堆最大值(-Xmx指定)一样。
-XX:+HeapDumpOnOutOfMemoryError 可以让虚拟机在出现内存溢出异常时Dump出当前的内存堆转储快照(.hprof文件)以便时候进行分析(比如Eclipse Memory Analysis)。 


这里附一个实例:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8

    -server -Xms48g -Xmx48g -Xss1m -XX:PermSize=512m -XX:MaxPermSize=1024m

    -XX:NewSize=8g -XX:MaxNewSize=16g

    -XX:NewRatio=4 -XX:SurvivorRatio=4

    -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:+DisableExplicitGC

    -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:ParallelCMSThreads=24

    -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime 

    -XX:+PrintHeapAtGC -Xloggc:/data/log/weimob_keyword/gc.log

    -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/log/weimob_keyword/heapdump.bin

    -XX:+CMSParallelRemarkEnabled -XX:+CMSScavengeBeforeRemark -XX:+ScavengeBeforeFullGC 

    -XX:+UseCMSCompactAtFullCollection

    -XX:CMSFullGCsBeforeCompaction=9 -XX:+ExplicitGCInvokesConcurrent 

    -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=75" 



本文转自 sykmiao 51CTO博客,原文链接:http://blog.51cto.com/syklinux/1942321,如需转载请自行联系原作者

相关文章
|
3月前
|
前端开发 Java 编译器
深入理解jvm - 编译优化(上)
深入理解jvm - 编译优化(上)
86 0
|
4月前
|
缓存 监控 算法
jvm性能调优实战 - 39一次大促导致的内存泄漏和Full GC优化
jvm性能调优实战 - 39一次大促导致的内存泄漏和Full GC优化
75 0
|
5月前
|
存储 监控 安全
Java虚拟机的锁优化策略
Java虚拟机的锁优化策略
28 0
|
4月前
|
架构师 Java
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
53 0
|
8月前
|
分布式计算 Java 开发者
GitHub爆款!Java性能优化:轻松道破软件性能调优,不止搞定JVM
今天给大家带来的是:周明耀老师的 《大话Java性能优化:轻松道破软件性能调优方法论和具体实现路径》,全面细致,一本书搞定性能优化 周明耀是谁? 12年投资银行项目、分布式计算项目工作经验,IBM开发者论坛专家作者。一名IT技术狂热爱好者,一名顽强到底的工程师。推崇技术创新、思维创新,对于新技术非常的热爱,致力于技术研发、研究,通过发布文章、书籍、互动活动的形式积极推广软件技术。欢迎添加作者“michael_tec”,共同探讨IT技术话题。
|
4月前
|
监控 数据可视化 Java
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
jvm性能调优实战 - 31从测试到上线_如何分析JVM运行状况及合理优化
54 1
|
6月前
|
Arthas 监控 算法
JVM调优篇:探索Java性能优化的必备种子面试题
本文将带你深入了解JVM调优的重要性、常见问题以及一些实用的调优工具和方法,助你在面试的过程中轻松应对
136 0
JVM调优篇:探索Java性能优化的必备种子面试题
|
3月前
|
缓存 算法 Java
深入理解jvm - 编译优化(下)
深入理解jvm - 编译优化(下)
51 0
|
4月前
|
存储 缓存 算法
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
74 0
jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
|
4月前
|
Java
jvm性能调优 - 17案例实战_每日上亿请求量的电商系统 老轻代垃圾回收参数如何优化
jvm性能调优 - 17案例实战_每日上亿请求量的电商系统 老轻代垃圾回收参数如何优化
85 0