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

  • 相关阅读:
    关于使用Java Mail进行邮件发送,抛出Could not connect to SMTP host: xx@xxx.com, port: 25的异常可能
    百度地图和solr展示资源和附近等功能的实现 四
    Python爬虫入门-3
    Python爬虫入门-2
    Python爬虫入门-1
    Python装饰器专题-限制函数调用次数(10s调用一次)
    32个Python爬虫项目让你一次吃到撑
    时间复杂度趣图分析
    各类数据库默认端口总结
    ansible使用三(ansible roles)
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3270921.html
Copyright © 2011-2022 走看看