`
mingren135
  • 浏览: 72441 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA-JVM分析工具

 
阅读更多

heap内存下载到本地后,可以用MAT工具分析内存泄露,还有一些自带命令可以方便分析。

1)jmap:列出堆中的当前java对象

/opt/ibm/java/bin/jmap -histo xx > heap.log

 

2)jmap:导出heap

/opt/ibm/java/bin/jmap -dump:live,format=b,file=/home/temp/heap.log xx

 

3)jhat:java heap analyse tool,java堆的分析命令,可以将堆中的对象以html的形式显示出来,包括对象的数量,大小等等,

并支持对象查询语言

/opt/ibm/java/bin/jhat heap.log,启动命令堆内存不足时,指定堆大小 jhat -J-Xmx512m heap.log

查看分析后的html文档,http://localhost:7000

 

4)jstat:java statistics monitoring tool,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控。

jstat [Options] vmid [interval] [count]

Options ,一般使用 -gcutil 查看gc情况 ;

vmid ,VM的进程号,即当前运行的java进程号;

interval: 间隔时间,单位为秒或者毫秒

count , 打印次数,如果缺省则打印无数次

 

4.1间隔1s查看gc情况

sudo -u admin /opt/ibm/java/bin/jstat -gcutil 4190 1s

S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.00   4.73  57.58  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  57.97  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  58.20  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  58.33  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  58.58  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  58.86  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  59.34  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  59.70  49.01  59.94    860   22.252   386  498.552  520.803
  0.00   4.73  60.01  49.01  59.94    860   22.252   386  498.552  520.803

 

4.2异常gc,s0和s1完全无用,对象直接分配在eden区,导致young很快占满后马上full gc

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00 100.00  69.57  41.55     27    6.632    44  187.973  194.606
  0.00   0.00  16.53  70.76  41.55     27    6.632    44  198.962  205.595
  0.00   0.00  86.21  70.76  41.55     27    6.632    45  198.962  205.595
  0.00   0.00 100.00  70.76  41.55     28    6.632    46  199.754  206.386
 minor gc太少了,很多临时对象没有被minor gc消灭掉,需要增大s0和s1,把参数-XX:SurvivorRatio=10改为-XX:SurvivorRatio=8,再重启后fullgc正常
  8.30   0.00  43.32  77.38  52.67    115    9.467     4    8.228   17.694
  8.30   0.00  52.69  77.38  52.67    115    9.467     4    8.228   17.694
  8.30   0.00  58.75  77.38  52.67    115    9.467     4    8.228   17.694
  8.30   0.00  63.94  77.38  52.68    115    9.467     4    8.228   17.694
  8.30   0.00  69.63  77.38  52.68    115    9.467     4    8.228   17.694
  8.30   0.00  73.61  77.38  52.68    115    9.467     4    8.228   17.694
  8.30   0.00  80.52  77.38  52.68    115    9.467     4    8.228   17.694
  8.30   0.00  85.72  77.38  52.68    115    9.467     4    8.228   17.694
  8.30   0.00  92.19  77.38  52.68    115    9.467     4    8.228   17.694
  8.30   0.00  97.30  77.38  52.68    115    9.467     4    8.228   17.694
  0.00   7.11   6.25  77.42  52.68    116    9.485     4    8.228   17.713
  0.00   7.11  10.95  77.42  52.68    116    9.485     4    8.228   17.713
  0.00   7.11  16.00  77.42  52.68    116    9.485     4    8.228   17.713
  0.00   7.11  20.17  77.42  52.68    116    9.485     4    8.228   17.713
  0.00   7.11  27.25  77.42  52.68    116    9.485     4    8.228   17.713
  0.00   7.11  32.05  77.42  52.68    116    9.485     4    8.228   17.713

 

4.3 经过调整后,还有1台机器有fullgc异常,如图

  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00  40.67  76.86  44.57     49    7.997   188  468.193  476.190
  0.00   0.00  40.71  76.86  44.57     49    7.997   188  468.193  476.190
  0.00   0.00  40.77  76.86  44.57     49    7.997   189  468.514  476.511
  0.00   0.00  40.83  76.86  44.57     49    7.997   189  468.514  476.511
  0.00   0.00  40.85  76.86  44.57     49    7.997   190  468.514  476.511
  0.00   0.00  40.88  76.86  44.57     49    7.997   190  468.812  476.809
  0.00   0.00  41.02  76.86  44.57     49    7.997   190  468.812  476.809
  0.00   0.00  41.08  76.86  44.57     49    7.997   190  468.812  476.809
  0.00   0.00  41.11  76.86  44.57     49    7.997   190  468.812  476.809
  0.00   0.00  41.17  76.86  44.57     49    7.997   190  468.812  476.809
  0.00   0.00  41.20  76.86  44.57     49    7.997   191  469.142  477.138
  0.00   0.00  41.25  76.86  44.57     49    7.997   192  469.447  477.444
  0.00   0.00  41.38  76.86  44.58     49    7.997   192  469.447  477.444
某牛人回复怀疑jvm自行触发了fullgc,把-XX:CMSInitiatingOccupancyFraction=80调整为-XX:+UseCMSInitiatingOccupancyOnly后gc正常了。
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  0.00  46.32  20.26  73.06  48.94     52    8.115     2    8.765   16.880
  0.00  46.32  25.65  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  29.10  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  32.18  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  36.38  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  39.27  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  41.23  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  44.79  73.06  48.95     52    8.115     2    8.765   16.880
  0.00  46.32  49.58  73.06  48.95     52    8.115     2    8.765   16.880
 神奇。?

 

 

 
分享到:
评论
1 楼 di1984HIT 2013-12-07  
写的不错,学习了、

相关推荐

    mat(mac)---jvm内存分析工具

    MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具,尤其适用于Mac OS X平台。这款工具可以帮助开发者诊断和解决Java应用中的内存泄漏问题,提高应用性能。MAT通过深入分析堆转储...

    JAVA-JVM-全面/发展史/GC.zip

    在“JAVA-笔记.pdf”中,你可能会学到如何理解和分析JVM内存配置,以及如何通过JConsole、VisualVM等工具监控和调优JVM。可能还会涉及JVM参数的设置,例如-Xms、-Xmx用于设定堆内存大小,-XX:NewRatio用于设置新生代...

    Java-JVM调优总结

    #### 三、JVM 性能监控与分析工具 1. **VisualVM**:集成多种监控功能的可视化工具,可用于查看 CPU 使用率、内存使用情况等。 2. **JConsole**:标准的 Java 监控工具,提供了丰富的监控选项。 3. **MAT (Memory ...

    mini-jvm使用 Java 8 实现 jvm

    同时,虽然可能没有完全实现垃圾回收,但理解垃圾回收的基本原理,如可达性分析和标记清除等,对于实现mini-jvm也是必要的。 总结 通过实现mini-jvm,开发者可以深入理解JVM的工作机制,这对于Java程序员来说是一...

    java-JVM-面试题从基础到高级详解-HM

    2. **JDK自带工具**:如jconsole、jvisualvm用于监控JVM状态,jmap用于内存映射,jstack用于线程堆栈快照,jhat用于堆转储分析。 五、JVM与其他技术的交互 1. **JNI(Java Native Interface)**:允许Java代码调用...

    揭秘Java虚拟机-JVM设计原理与实现

    10. **性能优化**:通过分析JVM的各种监控工具(如JConsole、VisualVM等),学习如何定位性能瓶颈并进行调优,包括堆大小调整、垃圾收集器选择、JVM参数设置等。 通过阅读这本书,开发者不仅能理解JVM的基本运作...

    show-busy-java-threads-jvm-cpu.rar

    `show-busy-java-threads.sh` 脚本的原理是利用JVM提供的命令行工具,如`jstack`(Java堆栈跟踪),来获取当前JVM中线程的详细信息。`jstack`命令可以打印出Java应用程序的线程快照,包括每个线程的ID、状态、调用...

    java-java面试题库整理-基础-JVM-线程并发-框架等.zip

    为了在激烈的Java开发者竞争中脱颖而出,深入理解Java基础知识、JVM(Java虚拟机)、线程并发以及常用框架是至关重要的。这份"java-java面试题库整理-基础-JVM-线程并发-框架等.zip"文件提供了一个全面的复习资源,...

    Java-JVM优化视频.zip

    网盘文件永久链接 目录 day1: 1 为什么要对jvm做优化 2 jvm的运行参数 3 jvm的内存模型 4 jmap的使用以及内存溢出分析 ...4 可视化GC日志分析工具 day3: 1 Tomcat8优化 2 JVM字节码 3 代码优化 .........

    weilei-JVM-ppt.rar

    【标题】"weilei-JVM-ppt.rar"是一个压缩包文件,包含了关于JVM(Java虚拟机)的深入讲解。这个压缩包很可能是由个人精心整理并分享的,用于帮助学习者提升JAVA编程的高级知识,特别是关于JVM的部分。 【描述】提到...

    JVM图解-JVM指令-JVM原型图.rar

    Java虚拟机(JVM)是Java程序运行的基础,它是一个抽象的计算机系统,负责执行Java字节码。在这个压缩包中,"JVM图解.png"可能是对JVM内部结构的可视化表示,"JVM图解"可能是一个详细的文档,解释了JVM的工作原理,...

    05-VIP-JVM调优工具详解(预习资料)1

    JVM调优工具是Java虚拟机(JVM)中的一组工具,用于优化和调试Java应用程序。这些工具可以帮助开发者和运维人员更好地了解JVM的运行情况,诊断和解决性能问题。 Jmap命令是JVM调优工具之一,用于查看内存信息。Jmap...

    java11-jvm白皮书_java_govwe_

    Java 11是Java开发工具集(JDK)的一个长期支持版本,自2018年9月发布以来,它提供了许多新特性和改进,旨在提高性能、安全性和稳定性。JVM(Java虚拟机)是Java平台的核心组件,负责运行Java程序。在Java 11中,对...

    gp-jvm-visualvm

    当我们谈论“gp-jvm-visualvm”时,我们是在讨论一个用于深入理解和分析JVM行为的工具集。这个压缩包文件包含了对JVM状态的详细视图,特别是关于堆栈溢出等关键问题的诊断工具,这对于开发者和性能调优专家来说是...

    Java虚拟机-jvm故障诊断与性能优化-源码

    在《实战Java虚拟机——JVM故障诊断与性能优化》一书中,作者深入探讨了如何对JVM进行故障排查和性能调优,通过源码分析来帮助读者理解其内部工作原理。下面我们将根据书中的主题,详细阐述相关的知识点。 1. **JVM...

    Java - JVM: 读书笔记 Chapter 05 The Java Virtual Machine ( Part I Basic )

    6. **源码和工具**:了解JVM的源码有助于开发者更深入地理解其工作原理,同时,工具如JVisualVM、JConsole和JProfiler等可以帮助开发者监控和分析JVM的运行状态,包括内存使用、线程状态、CPU负载等,以优化应用程序...

    pact-jvm-model_2.10-2.1.2.zip

    Error Prone是一款由Google开发的静态代码分析工具,它能够检测并防止常见的编程错误。Error Prone作为javac的插件,能够在编译时直接发现潜在的问题,而不仅仅是依赖于运行时的异常。例如,它可以检查空指针、未...

    JAVA命令大全-JVM设置.rar

    3. **性能监控**:`jstat`用于监控JVM的运行时统计信息,`jmap`获取堆内存详细信息或生成堆转储文件,`jhat`分析堆转储文件,`jconsole`和`jvisualvm`提供图形界面进行性能监控和诊断。 4. **JVM诊断**:`jinfo`...

    Tomcat教程-JVM相关工具.docx

    jvisualvm是另一个功能强大的Java应用性能分析工具,集成了多种JDK工具的功能,如jconsole、jstack、jmap等,提供了一个统一的可视化界面。 了解并熟练运用这些JVM工具,可以帮助开发者和运维人员更好地理解Tomcat...

    show-busy-java-threads.sh文件

    `show-busy-java-threads.sh`脚本通过JVM提供的命令行工具`jstack`来获取当前Java进程的线程堆栈信息,从而揭示这些繁忙线程的详细状态。 `jstack`是Java标准工具包(JDK)的一部分,它能输出Java虚拟机(JVM)中...

Global site tag (gtag.js) - Google Analytics