zoukankan      html  css  js  c++  java
  • JVM performance profiling (有待整理)

    Agenda

    memory model

    3 parts: heap, permgen (method area) , thread stack(pointer, local var)

    heap: young and old generation ?? permanent generation 

    young: eden, fromspace(surviror1), tospace(surironr2)


    == quoted ==

    To get the clear memory diagram:http://blog.pointsoftware.ch/index.php/under-the-hood-runtime-data-areas-javas-memory-model/

    http://www.yourkit.com/docs/kb/sizes.jsp

    http://www.slideshare.net/gengmao/inside-the-jvm-memory-management-and-troubleshooting  

    PermGen

    The method area is also known as the permanent generation space (PermGen). Allclass data are loaded into this memoryspace. This includes the field and method data and the code for the methods andconstructors

    Heapmemory

    Sinceobjects are stored in the heap part it is worth to have a closer look. The heapspace itself is again separated into several spaces:

    -Young generation  with eden and survivor space

    -Old Generation with tenured space

    Eachspace harbors objects with different life cycles:

    -New/short-term objects are instantiated in theeden space.

    -Survived/mid-term objects are copied from theeden space to the survivor space.

    - Tenured/long-term objects arecopied from the survivor to the old generation space.

    == unquoted ==


    jvm setting

    GC algorithm: serial, ... etc, MaxNewSize,  MaxSize ,  there is recommendation online, client side, server side and diff platform.

    JavaOne: best heap percent :43% ??


    tunning concerns

    availablility  , throughput, latency and responsiveness, memory footprint (100 txn need how many mem?), startup time


    real time profiling

    Remote
    Add JMX parameter to bootstrap script


    $JAVA_HOME/bin/java ${GC_OPTS}
    -Dcom.sun.management.jmxremote  
    -Dcom.sun.management.jmxremote.port=9010
    -Dcom.sun.management.jmxremote.local.only=false
    -Dcom.sun.management.jmxremote.authenticate=false
    -Dcom.sun.management.jmxremote.ssl=false
    -classpath $PROJ_CLASSPATH ${BOOTSTRAPPER} ${PARAMETER}

    Local 

    VisualVM/Jconsole is able to detect the running JAVA application process id..

    http://www.gamlor.info/wordpress/2011/09/visualvm/

    Eclipse for VisualVM (https://visualvm.java.net/eclipse-launcher.html)

    JMX profile ?! - linux svr profile , like shell

    server port number?!  - need ask server team

    Will it cause the app slowness? - yes, occupy CPU


    post gc analysis

    Enable the verbose:gc option in the bootstrap script

    -verbose:gc

    -Xms512m -Xmx1024m

    -XX:+PrintGCTimestamps

    -XX:+PrintGCDetails

    -Xloggc:./${GC_LOG}

    After the log file generated, you can use the tool to analyse. - GC Histogram Tool

    All GC

    Young GC - GC in young generation ?

    Full GC - 


    Good tips:

    Eclipse plugin center - for you to goto there via company proxy, 

    1. check from stackoverflow site - Add parm into eclipse.ini  ;

    2. disable socket proxy port


    Websphere JVM profiling on app server

    Ask WAS team to install a was plugin into for monitor

  • 相关阅读:
    android-studio add jar
    android-studio 下载
    fastjson对Date类型的格式化
    springboot多环境区分
    Docker开启远程访问
    docker中批量删除 tag为none的镜像
    项目无法依赖Springboot打出的jar
    Spring Boot使用Swagger2
    mysql表时间戳字段设置
    springMVC dubbo注解无效,service层返回空指针
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3270921.html
Copyright © 2011-2022 走看看