5.14日下午 jvm 调优 java社区日上的jvm调优

5.14日下午  jvm 调优 java社区日上的jvm调优,这个哥们的pdf 很长 看着也很细 哈哈 分享给大家了(这个pdf 的主人啊 相信你共享没意见 那天讨论挺热烈的嘛嘿嘿)

另外还有个 工作中 从哪个谁谁谁那要来的 2个jvm相关的ppt 哈哈也分享个大家了...

摘点儿出来先睹为快哈哈

Java虚拟机的种类:

Oracle Java虚拟机
–原Sun Java虚拟机
–原BEA JRockit
–两种Java虚拟机,都运行在Windows、Linux、Solaris平台
HP Java虚拟机:
–与SUN JDK基本兼容,有自己独特的启动参数
–运行在HP UNIX上
IBM Java虚拟机:
–与Sun JDK基本兼容
–启动参数的写法风格与Sun JDK、HP JDK非常不同
–主要用于WebSphere、跑在AIX上的中间件服务器
开源Java虚拟机:
–与SUN JDK兼容

.......

Java虚拟机32 VS 64

尽量选择使用32位JDK:
–32位JDK在TPS测试中,结果比64位JDK要好;JDK 6.0启用指针压缩技术后,64位略微领先32位JDK
–主要适用于内存需求较小,CPU密集型应用
64位JDK主要用于大内存应用:
–突破4G内存限制
–吞吐量并没有提高
–主要用于大内存需求的系统
–尽量启用指针压缩技术
IBM: -Xcompressedrefs
SUN:-d64 -XX:+UseCompressedOops
BEA:-XXcompressedRefs=true

 

..........

常见GC算法:
–SUN、HP的GC算法
–JRockit的GC算法
–IBM JDK的GC算法

........

 

根据回收器,简单分为:
–串行–XX:+UseSerialGC
Out of Box算法,年轻代串行复制,年老代串行标记整理,主要用于桌面应用
–并行–XX:+UseParallelGC
年轻代暂停应用程序,多个垃圾收集线程并行的复制收集,年老代暂停应用程序,与串行收集器一样,单垃圾收集线程标记整理。JDK 6.0启用该算法后,默认启用了-XX:+UseParallelOldGC,性能大为提高
–并发(Concurrent Low Pause Collector) –XX:+UseConcMarkSweepGC
启用该参数,默认启用了-XX:+UseParNewGC;简单的说,并发是指用户线程与垃圾收集线程并发,程序在继续运行,而垃圾收集程序运行于其他CPU上。
–Garbage First (G1) Garbage Collector
-XX:+UnlockExperimentalVMOptions -XX:+UseG1GC
SUN JDK 6.0 Update14引入,实际生产环境中还没有采用

 

常见GC算法--SUN、HP

并行算法示例:
–-server -Xms1536m -Xmx1536m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseParallelGC-XX:+UseParallelOldGC -XX:+UseAdaptiveSizePolicy -XX:SurvivorRatio=2 -XX:+DisableExplicitGC -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/tmp/server_gc$$.log
并发算法示例:
–-server -Xms1536m -Xmx1536m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC-XX:+UseParNewGC -XX:SurvivorRatio=2 -XX:MaxTenuringThreshold=16 -XX:+DisableExplicitGC -XX:+CMSPermGenSweepingEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSParallelRemarkEnabled -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:/tmp/server_gc$$.log

 

常见GC算法--JRockit

根据回收器,简单分为:
–-XgcPrio:throughput
默认算法,主要用于桌面应用
–-XgcPrio:pausetime
-XgcPrio:pausetime -XpauseTarget:210ms 因为免费,所以最低只能设置到200ms。200ms是Real-Time JDK的分界线
–-XgcPrio:deterministic
动态调整的垃圾收集策略
示例:
–-Xms1024m -Xmx1024m -Xgcprio:pausetime -Xpausetarget=210ms -XgcReport -XgcPause -Xverbose:memory

 

常见GC算法--IBM
根据回收器,简单分为:
–-Xgcpolicy:optthruput
默认策略。对于吞吐量比短暂的GC 停顿更重要的应用程序,通常使用这种策略。每当进行垃圾收集时,应用程序都会停顿。
–-Xgcpolicy:optavgpause
通过并发地执行一部分垃圾收集,在高吞吐量和短GC 停顿之间进行折中。应用程序停顿的时间更短。
–-Xgcpolicy:gencon
以不同方式处理短期存活的对象和长期存活的对象。采用这种策略时,具有许多短期存活对象的应用程序会表现出更短的停顿时间,同时仍然产生很好的吞吐量。
–-Xgcpolicy:subpool
采用与默认策略相似的算法,但是采用一种比较适合多处理器计算机的分配策略。建议对于有16 个或更多处理器的SMP 计算机使用这种策略。这种策略只能在IBM pSeries® 和zSeries® 平台上使用。需要扩展到大型计算机上的应用程序可以从这种策略中受益。
示例:
–-Xms768m -Xmx1024m -Xmn256m -Xgcpolicy:gencon

 

 

选择GC算法,遵循以下原则:
–评估程序类型
桌面应用还是服务器端应用
吞吐量优先还是响应时间优先
–仅适用64位JDK的算法
比如在IBM AIX 64位JDK环境下,当heap区大于16G后,subpool明显性能提高
–确定GC算法之后,再逐步调整小参数
-Xmn(-XX:NewSize -XX:MaxNewSize)
-XX:SurvivorRatio
-XX:MaxTenuringThreshold
.......
–测试期间实时监控
SUN、HP、JRockit都可以通过jstat命令进行实时监控
避免使用jmap -histo,原因是可能会造成Full GC

 

 

更多 看附件吧.....

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值