1、JConsole可以图形化查看JVM中内存的变化状况,JConsole是JDK 5及以上版本中自带的工具,位于JDK的bin目录下,运行时直接运行JConsole.exe或JConsole.sh(要求支持图形界面)。
2、JVisualVM是JDK 6 update 7之后推出的一个工具,它类似于JProfiler的工具,基于此工具可查看内存的消耗情况、线程的执行状况及程序中消耗CPU、内存的动作。
3、JMap是JDK中自带的一个用于分析JVM内存状况的工具,位于JDK的bin目录下。使用JMap可查看目前JVM中各个代的内存状况、JVM中对象的内存的占用状况,以及导出整个JVM中的内存信息。
在linux上执行jmap -heap [pid],就可查看整个JVM中内存的状况,看到的信息类似如下(和JDK版本、GC策略有关):
导出整个JVM中的内存信息
通过以上方法能查看到JVM中对象内存的占用情况,但很多时候还要知道这个对象到底是谁创建的。例如上面显示出来的[C,只知道它占用了那么多的空间,但不知道是什么对象创建出的[C,于是jmap提供了导出整个jvm中的内存信息的支持。基于一些jvm内存的分析工具,例如sun JDK 6中的jhat、Eclipse Memory Analyzer,可以分析jvm中内存的详细信息,例如[C是哪些对象创建的。
执行如下命令即可导出整个jvm中的内存信息:
jmap -dump:format=b,file=文件名 [pid]
4、JHat是Sun JDK 6及以上版本中自带的一个用于分析jvm堆dump文件的工具,基于此工具可分析jvm heap中对象的内存占用状况、引用关系等。
执行如下命令分析jvm堆的dump文件:
jhat -J-Xmx1024M [file]
执行后等待console中输出Started HTTP server on port 7000,看到后就可以通过浏览器访问http://ip:7000了,此页面默认为按package分类显示系统中所有的对象实例。在页面的最下端有Other Queries导航,其中有显示jvm中对象实例个数的链接、有显示jvm中对象大小的链接等,点击显示jvm中对象大小的链接
如果要监视远程Java进程,需要在远程服务器上做相应的设置 1)windows系统下,需要修改 tomcat主目录\bin\ catalina.bat文件 将 set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" 修改成 set JAVA_OPTS=%JAVA_OPTS% -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.util.logging.config.file="%CATALINA_BASE%\conf\logging.properties" -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port="8080" -Dcom.sun.management.jmxremote.authenticate="false" -Dcom.sun.management.jmxremote.ssl="false" 2)Linux系统下,需要修改 tomcat主目录\bin\ catalina.sh文件 增加一行 CATALINA_OPTS="$JAVA_OPTS -Djava.rmi.server.hostname=218.28.198.188 -Dcom.sun.management.jmxremote.port=9527 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"即可 然后使用JConsole就可以监控Tomcat啦。 点击%JAVA_HOME%\bin下的jconsole.exe即可
2、JVisualVM是JDK 6 update 7之后推出的一个工具,它类似于JProfiler的工具,基于此工具可查看内存的消耗情况、线程的执行状况及程序中消耗CPU、内存的动作。
3、JMap是JDK中自带的一个用于分析JVM内存状况的工具,位于JDK的bin目录下。使用JMap可查看目前JVM中各个代的内存状况、JVM中对象的内存的占用状况,以及导出整个JVM中的内存信息。
在linux上执行jmap -heap [pid],就可查看整个JVM中内存的状况,看到的信息类似如下(和JDK版本、GC策略有关):
using thread-local object allocation. Parallel GC with 8 thread(s) Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 1610612736 (1536.0MB) NewSize = 524288000 (500.0MB) MaxNewSize = 524288000 (500.0MB) OldSize = 4194304 (4.0MB) NewRatio = 8 SurvivorRatio = 8 PermSize = 100663296 (96.0MB) MaxPermSize = 268435456 (256.0MB) Heap Usage: PS Young Generation Eden Space: capacity = 430702592 (410.75MB) used = 324439936 (309.4100341796875MB) free = 106262656 (101.3399658203125MB) 75.32806675098904% used From Space: capacity = 46333952 (44.1875MB) used = 13016424 (12.413429260253906MB) free = 33317528 (31.774070739746094MB) 28.092626331550566% used To Space: capacity = 46792704 (44.625MB) used = 0 (0.0MB) free = 46792704 (44.625MB) 0.0% used PS Old Generation capacity = 1086324736 (1036.0MB) used = 945707880 (901.8973159790039MB) free = 140616856 (134.1026840209961MB) 87.05572548059884% used PS Perm Generation capacity = 100663296 (96.0MB) used = 46349592 (44.202415466308594MB) free = 54313704 (51.797584533691406MB) 46.044182777404785% used
导出整个JVM中的内存信息
通过以上方法能查看到JVM中对象内存的占用情况,但很多时候还要知道这个对象到底是谁创建的。例如上面显示出来的[C,只知道它占用了那么多的空间,但不知道是什么对象创建出的[C,于是jmap提供了导出整个jvm中的内存信息的支持。基于一些jvm内存的分析工具,例如sun JDK 6中的jhat、Eclipse Memory Analyzer,可以分析jvm中内存的详细信息,例如[C是哪些对象创建的。
执行如下命令即可导出整个jvm中的内存信息:
jmap -dump:format=b,file=文件名 [pid]
4、JHat是Sun JDK 6及以上版本中自带的一个用于分析jvm堆dump文件的工具,基于此工具可分析jvm heap中对象的内存占用状况、引用关系等。
执行如下命令分析jvm堆的dump文件:
jhat -J-Xmx1024M [file]
执行后等待console中输出Started HTTP server on port 7000,看到后就可以通过浏览器访问http://ip:7000了,此页面默认为按package分类显示系统中所有的对象实例。在页面的最下端有Other Queries导航,其中有显示jvm中对象实例个数的链接、有显示jvm中对象大小的链接等,点击显示jvm中对象大小的链接
./bin/jhat -J-Xmx1024M /home/xxxxx/jvm.dump Snapshot resolved. Started HTTP server on port 7000 Server is ready. Package <Arrays> class [Lantlr.Token; [0xb276b450] class [Lantlr.collections.AST; [0xb277f9b8] class [Lcom.ctc.wstx.sr.Attribute; [0xb41af208] class [Lcom.ctc.wstx.util.SymbolTable$Bucket; [0xb40db8b8] class [Lcom.esotericsoftware.kryo.Kryo$Listener; [0xb0f18eb8] class [Lcom.sun.jersey.api.client.ClientResponse$Status; [0xb63e6f98] class [Lcom.sun.jersey.api.uri.UriComponent$Type; [0xb3e52ed8] class [Lcom.sun.jersey.core.header.reader.HttpHeaderReader$Event; [0xb2f09368] class [Lcom.sun.jersey.core.reflection.AnnotatedMethod; [0xb2dda758] class [Lcom.sun.jersey.core.spi.component.ComponentScope; [0xb2ddf660] class [Lcom.sun.jersey.core.util.KeyComparatorHashMap$Entry; [0xb2dfe068] class [Lcom.sun.xml.bind.v2.model.annotation.AnnotationSource; [0xb484c3a8] class [Lcom.sun.xml.bind.v2.model.annotation.Locatable; [0xb438baa8] class [Lcom.sun.xml.bind.v2.model.annotation.Quick; [0xb438bd80] class [Lcom.sun.xml.bind.v2.model.core.ID; [0xb43de388] class [Lcom.sun.xml.bind.v2.model.core.PropertyInfo; [0xb484c6b8] class [Lcom.sun.xml.bind.v2.model.core.PropertyKind; [0xb43dab20] class [Lcom.sun.xml.bind.v2.model.impl.ClassInfoImpl$PropertyGroup; [0xb43d8d68] class [Lcom.sun.xml.bind.v2.model.impl.ClassInfoImpl$SecondaryAnnotation; [0xb43c5e30] class [Lcom.sun.xml.bind.v2.model.impl.PropertyInfoImpl; [0xb484c990]
Class 0xb3dba700 class [Ljavax.servlet.FilterConfig; Superclass: class java.lang.Object Loader Details ClassLoader: org.apache.catalina.loader.StandardClassLoader@0xc0000690 (122 bytes) Signers: <null> Protection Domain: java.security.ProtectionDomain@0xc0018898 (58 bytes) Subclasses: Instance Data Members: Static Data Members: Instances Exclude subclasses Include subclasses References summary by Type References summary by type References to this object:
发表评论
-
charles4.2下载与破解方法以及配置https
2020-02-26 09:03 2有两个抓包工具 一个是fidder,一个是charles,两个 ... -
序列号批量生成算法
2019-12-05 14:11 0业务处理过程当中,经常需要生成订单号、序列号等,简单的可 ... -
使用ANTLR处理文本
2019-08-28 17:32 764引用 使用 Antlr 处理文本 https://www.ib ... -
解决maven-metadata.xml文件下载卡死问题
2019-04-11 14:02 3975http://192.168.1.110:8081/nexus ... -
rsync备份和删除指定文件
2018-01-02 10:23 2044文件异地备份时,需要将本地文件合并到服务器上,且不能删除服务器 ... -
javaLocale格式化日期和数字
2017-08-25 09:26 865public static void main(Strin ... -
centos6 tomcat 启动脚本 tomcat服务
2017-08-23 11:24 1438系统自动启动tomcat 复制该脚本到/etc/init.d/ ... -
win7 命令行改IP和DNS
2016-12-21 18:35 732使用管理员权限运行CMD //改DNS netsh ... -
jenkins中集成sonar,使用findbug、pmd、checkstyle提升代码质量
2016-09-29 14:58 6167实际上jenkins单独也 ... -
jenkins 集成sonar
2016-09-18 10:14 0jenkins集成sonar可以从插件中心直接更新安装 son ... -
activeMQ5.14权限配置
2016-08-17 13:47 2669activeMQ默认的消息队列没有用户名和密码,可以直接通过T ... -
solaris 使用解压版的jdk
2016-07-27 15:17 761solaris上配置jdk其实也很简单 由于solaris有 ... -
solaris tomcat开机启动
2016-07-27 16:17 618创建文件夹/var/svc/manifes ... -
HibernateTemplate Vs HibernateDaoSupport Vs Direct Hibernate Access
2016-07-26 11:07 732http://forum.spring.io/forum/sp ... -
spring mvc mybatis will not be managed by Spring
2016-07-20 17:30 9876项目运行时发现事务提交不完整,回滚时只能回滚一半。 系统配置 ... -
java里判断一点是否在某个区域
2016-06-03 17:47 1830import java.awt.geom.Path2D ... -
12306的技术升级
2016-04-20 16:17 1026升级的核心是余票查询的升级,余票查询使用存储过程,sybase ... -
工作流的123
2016-04-20 12:58 571三分钟了解Activity工作流 工作流一般会给开发人员提供流 ... -
sping mvc 使用@Value注解为controller注入值
2016-04-17 17:39 10830spring mvc 里有两个配置文件, 第一个,为sprin ... -
googleapis.com域名访问慢的解决办法
2016-04-13 12:09 9681、安装火狐 2、安装插件ReplaceGoogleCDN
相关推荐
**JProfiler:强大的Java JVM分析工具** JProfiler是一款专业的Java虚拟机(JVM)分析工具,它能够帮助开发者深入理解应用程序的性能瓶颈,优化内存管理,以及排查内存泄漏等问题。这款软件提供了丰富的功能,包括...
MAT JVM内存分析工具可以帮助开发者深入理解Java虚拟机(JVM)的内存管理机制,通过分析堆内存快照来识别内存消耗异常的情况。 首先,MAT提供了丰富的视图来帮助用户查看内存状态,例如“概述”视图可以快速了解堆...
IBM jvm 分析工具 jca436.jar
IntelliJ IDEA(简称Idea)作为广受欢迎的Java集成开发环境,提供了一系列强大的工具来帮助开发者进行性能调优,其中就包括JProfiler11这款强大的JVM内存分析工具。本文将详细介绍如何使用Idea中的JProfiler11插件,...
IBM HeapAnalyzer是一款强大的Java虚拟机(JVM)内存分析工具,专为诊断和解决Java应用程序的内存泄漏问题而设计。这个工具能够帮助开发者深入理解Java应用程序的内存使用情况,从而优化性能并防止由于内存泄漏导致...
2. **VisualVM**:功能更为强大的多合一JVM分析工具,提供CPU和内存分析、线程快照、方法Profiling等功能。 3. **JMX(Java Management Extensions)**:提供了一种标准的方式来管理和监控Java应用程序,可以通过...
JProfiler作为一款强大的JVM分析工具,是Java开发者优化应用性能的重要助手。通过与IntelliJ IDEA的整合,它为开发者提供了便捷的性能监控和分析手段,帮助我们深入理解应用的运行状况,及时发现并解决性能问题,...
MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具,尤其适用于Mac OS X平台。这款工具可以帮助开发者诊断和解决Java应用中的内存泄漏问题,提高应用性能。MAT通过深入分析堆转储...
IBM JVM 分析工具,JCA,javaCore查看工具
MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的JVM内存分析工具,尤其适用于诊断Java应用程序的内存泄漏问题。在Java开发过程中,内存溢出(Out Of Memory)问题常常会导致程序异常终止,而MAT就是解决这类...
"Jvm堆栈dump文件分析"是指通过特定工具对这些dump文件进行解析,以便诊断和解决问题。 IBM提供了一款名为HeadAnalyzer的工具,版本4.1.4,专门用于分析Java堆栈信息,尤其适用于WebSphere应用服务器环境。...
jvisualvm是一款功能更全面的JVM监控工具,它不仅能够监控JVM的状态,还可以进行垃圾回收管理、线程分析等功能。jvisualvm的界面友好,非常适合进行深入的性能分析工作。 **使用步骤:** 1. **启动jvisualvm**:...
MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具。它主要用于诊断Java应用程序的内存泄漏问题,帮助开发者理解内存消耗情况,优化内存配置,从而提升应用性能。MAT以其易用性和...
"jvmgc日志分析工具"专为解析和可视化JVM生成的GC日志而设计,帮助开发者识别内存瓶颈,调整内存设置,以及诊断可能的性能问题。 GC日志是JVM在运行过程中记录的关于垃圾收集活动的详细信息,包括垃圾收集的起始...
本篇文档详细介绍了JVM调优工具的命令使用及其相关知识点,涵盖了内存信息分析、死锁检测、JMX远程监控等方面的命令行工具的使用方法。 首先,文档提到了JPS命令,它用于查看当前运行的Java进程信息,并返回进程ID...
MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具。它被广泛用于诊断和解决Java应用程序中的内存泄漏、内存消耗过高以及性能问题。MAT提供了一种直观的方式来查看和理解堆内存的...
这些JVM监控工具提供了全面的洞察力,帮助开发者调试问题、优化性能和理解应用程序的行为。熟悉并掌握它们的使用,是Java开发和运维工作中的重要技能。在实际操作中,应根据具体情况选择合适的工具,以实现高效的...