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

  • 相关阅读:
    (Relax njuptoj)1009 数的计算(DP)
    Eclipse使用技巧总结(二)
    Ibatis的分页机制的缺陷
    TFT ST7735的Netduino驱动
    超级求爱程序--为我们的程序工作找乐子
    Selenium Grid跨浏览器-兼容性测试
    PHP一般情况下生成的缩略图都比较不理想
    库目录和头文件目录中生成画图函数
    根据PHP手册什么叫作变量的变量?
    数据库的最基本的逻辑结构组成架构
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3270921.html
Copyright © 2011-2022 走看看