jvm基本操作总结

查看当前系统的垃圾回收算法:java -XX:+PrintCommandLineFlags -version

查看gc回收情况:
jstat -gc 28421 100s
jstat -gcutil 28421 100s

查看堆内存概况:
/usr/local/jdk1.8.0_131/bin/jmap -head 28421

关于CMS和fullgc:
cms只针对老年代进行垃圾回收,但是在回收的时候(包括ygc发现空间不够)如果判断需要进行压缩回收,就会触发fullgc,对全局的堆内存进行回收,采用的是单线程的老年代回收算法(跟cms算法写在一起),默认情况会进行压缩算法回收,可以配置回收前进行一次ygc,加快老年代的回收效果。

jvm参数建议:
-Xmx -Xms 最大最小堆生产建议设置一样,避免动态的扩缩容引起频繁的gc,如果测试环境可以设置较小的最小值,以充分利用资源做业务验证
-Xmn 新生代大小,对G1无效
-XX:PermSize,-XX:MaxPermSize 对JDK7及以下设置永久代,建议设置最大值,默认的最大值偏小,对大型应用可能会OOM
-XX:MetaspaceSize,-XX:MetaspaceSize 对JDK8及以上设置元空间,最大值为系统支持的最大内存,会动态扩容,注意内存泄漏后物理内存被用尽
-XX:+UseConcMarkSweepGC 使用CMS收集器
-XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 在CMS在对内存占用率达到70%的时候开始GC
-XX:ErrorFile=/jvm/hs_err_pid%p.log -Xloggc:/jvm/gc.log -XX:HeapDumpPath=/jvm -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError 设置gc日志和OOM时dump内存快照

4G内存及以下建议采用cms:
-Xmx2688M -Xms2688M -Xmn960M -XX:MetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseConcMarkSweepGC -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:+CMSClassUnloadingEnabled -XX:+ParallelRefProcEnabled -XX:+CMSScavengeBeforeRemark -XX:ErrorFile=/jvm/hs_err_pid%p.log -Xloggc:/jvm/gc.log -XX:HeapDumpPath=/jvm -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError

6G及以上可以尝试G1:
-Xmx5440M -Xms5440M -XX:MaxMetaspaceSize=512M -XX:MetaspaceSize=512M -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled -XX:ErrorFile=/jvm/hs_err_pid%p.log -Xloggc:/jvm/gc.log -XX:HeapDumpPath=/jvm -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值