zoukankan      html  css  js  c++  java
  • JVM性能调优

    http://blog.csdn.net/ning109314/article/details/10411495/
    http://www.mamicode.com/info-detail-1028149.html
    http://uule.iteye.com/blog/2114697

    http://blog.csdn.net/llbupt/article/details/6661183

    http://blog.csdn.net/hengyunabc/article/details/24924843

    http://blog.csdn.net/zhoutao198712/article/details/7783038

    http://blog.csdn.net/fenglibing/article/details/6298326(mat)

    http://www.blogjava.net/rosen/archive/2010/06/13/323522.html(mat)

    jmap -F -dump:format=b,file=j.bin 6664

    jstat -gcutil pid

    开启jmx连接jvm  

    linux下tomcat版本7.0

    jdk版本1.8

    开启tomcat的jmx,远程jvm查看运行情况

    找到tomcat 的bin目录。

    打开catalina.sh文件。

    找到242行左右。

    # ----- Execute The Requested Command -----------------------------------------

    在此添加如下内容:

    123.56.**.**为主机IP地址,端口为9999.

    [ $1 != "stop" ] && JAVA_OPTS="-Dcom.sun.management.jmxremote

    -Djava.rmi.server.hostname=123.56.**.**

    -Dcom.sun.management.jmxremote.port=9999

    -Dcom.sun.management.jmxremote.ssl=false

    -Dcom.sun.management.jmxremote.authenticate=false $JAVA_OPTS"
    export JAVA_OPTS

    重新启动tomcat后,如果9999端口启动了。

    使用jconsle,或jvisual来连接。

    设置jvm大小:

    内存16G。

    JAVA_OPTS="-Xms1024m -Xmx2048m -Xss1024K -XX:PermSize=512m -XX:MaxPermSize=1024m"
    xms是heap大小的初始值1G

    xmx是heap最大值为4G

    xms最好=xmx。

    xss表示一个线程的大小,jdk5后默认为1m。太大,产生不了过多的线程数。

    permSize是永久区的大小,加载class类等附加信息。(jdk1.8不支持,加上也行,可以通过,由native memory inside JVM代替)
    PermSize不可大于Xmx。

    元空间(Metaspace)

    jdk1.8使用参数MaxMetaspaceSize(-XX:MaxMetaspaceSize=256m)

    MaxMetaspaceSize用于限制本地内存分配给类元数据的大小。如果没有指定这个参数,元空间会在运行时根据需要动态调整。

    -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:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=mem.dump
    heap出现溢出时,保留日志信息,使用jhat分析。

    以下为jmx服务添加验证

    http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html


    chmod 600 jmxremote.password(cp jmxremote.password.template --> jmxremote.password)
    chmod 600 jmxremote.access

    (有可能报错)

    -Dcom.sun.management.jmxremote.authenticate=true

    -Dcom.sun.management.jmxremote.access.file=FilePath

    -Dcom.sun.management.jmxremote.password.file=FilePath

    jmxremote.access,jmxremote.password文件在JDK安装目录/jre/lib/management/*

    jmxremote.access,jmxremote.password分别把最后两行#去掉。

  • 相关阅读:
    GET POST区别
    http1.0 1.1 2.0区别
    分布式系统理论之Quorum机制
    MySQL解析过程、执行过程
    redis常见问题和解决方案
    Windows下安装Linux虚拟机的用途和好处
    ping,telnet,ssh命令的理解
    强化学习入门 第五讲 值函数逼近
    强化学习入门第四讲 时间差分方法
    强化学习基础 第三讲 蒙特卡罗方法
  • 原文地址:https://www.cnblogs.com/nsw2018/p/5956844.html
Copyright © 2011-2022 走看看