java opts基本参数设置

来源:互联网 发布:无线上网卡淘宝 编辑:程序博客网 时间:2024/05/16 05:39

JVM 模型

java虚拟机体系结构
这里写图片描述
JVM内存模型
这里写图片描述

JVM 调优常用小工具

  • jps -l
    这里写图片描述

  • jstat ‒[ gc | gcutil | gccause] pid interval(ms) num
    这里写图片描述

这里写图片描述

S0、S1对应From、To空间;之后是Eden、Old、Perm;在后面对应YGC次数、YGCT用时等。

  • jmap ‒heap pid
    这里写图片描述

这里写图片描述

java opts基本参数设置

  • gc优化目标:一是减少stop the world时间(所有的回收都会有,不是只有fullgc),二是减少服务器资源使用。

最终建议的设置

  • java -server -Xmx2gm -Xms2g -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:PermSize=64m -XX:MaxPermSize=96m -XX:-DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection -XX:+UseParNewGC -XX:ParallelGCThreads=20 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$CATALINA_BASE/logs/java_pid.hprof -Dqunar.logs=$CATALINA_BASE/logs -XX:+PrintGCDateStamps -XX:+PrintGCDetails -Xloggc:$CATALINA_BASE/logs/gc.log

    -server:作为第一个参数,在多个CPU时性能佳
    -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一 ,Sun官方推荐配置为整个堆的3/8;-XX:NewRatio=2 建议显示设置为2。两者任选一个即可。
    -XX:SurvivorRatio=8 建议显示设置为8
    -XX:PermSize:Size of the Permanent Generation. [5.0 and newer: 64 bit VMs are scaled 30% larger; 1.4 amd64: 96m; 1.3.1 -client: 32m.]
    -XX:-DisableExplicitGC:保持默认。详细可参考HotSpot VMJVM调优的”标准参数”的各种陷阱
    -XX:+UseConcMarkSweepGC:设置年老代为并发收集。
    -XX:CMSFullGCsBeforeCompaction:由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
    -XX:+UseCMSCompactAtFullCollection:打开对年老代的压缩。可能会影响性能,但是可以消除碎片。
    -XX:+UseParNewGC: 设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
    -XX:ParallelGCThreads=20:配置并行收集器的线程数,即:同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。
    -XX:+HeapDumpOnOutOfMemoryError:在java.lang.OutOfMemoryError 异常出现时,输出一个dump.core文件,记录当时的堆内存快照。
    -XX:HeapDumpPath=/home/jack/java_pid.hprof 堆内存快照的存储文件路径。
    -Xloggc:输出GC 详细日志信息至指定文件。

JVM调优参考

垃圾收集器简介
你在一起
ggjucheng点点滴滴,尽在文中
hengyunabc的专栏
新生代和老年代怎样的比例比较合适呢
讨论HotSpot VM JVM调优的”标准参数”的各种陷阱
JVM不稳定参数
sun 官网文档
深入理解Java虚拟机——JVM高级特性与最佳实践(第2版)下载地址

1 0
原创粉丝点击