在Linux上测试我的jar应用程序时,我使用下面的命令行来跟踪特定对象(例如JButton)的使用情况/内存负载。jmap-histo:live|grepJButton哪些结果:35:2411136javax.swing.JButton99:312728javax.swing.JButton$AccessibleJButton现在我正尝试对Windows执行相同的操作,但我找不到类似的命令(如grep)来跟踪特定对象。jmap-histo[:live]提供所有对象的完整列表。Windows是否有用于此类用法的类似工具或替代方法? 最佳答案
我知道jmap是用来创建堆转储的,同样可以用Jhat来分析。jVisualVM也可用于分析堆转储(并且可以执行更多任务,例如分析等)。但是使用jHat和visualVM分析堆转储之间有什么区别(如果使用Web则除外,其次是桌面)。Sun提供了哪些不同的工具,哪一个更好?PS:我对这些工具的了解有限,因为我使用的分析/分析工具有限,例如JProbe、Java堆转储分析器等。如果我的理解有误,请指正。 最佳答案 jmap和jhat是具有命令行界面的核心工具。VisualVM是一个可视化工作台,集成了命令行工具,无需通过命令行选项即可更轻
我有一个java程序,它不断调用java.util.zip来压缩/解压缩数据。它会在几秒钟内耗尽内存。我使用jmap进行了内存转储,我正在使用jhat查看它。Finalizer摘要显示Totalinstancespendingfinalization:0。如果我理解正确,我没有任何对象(1)有finalize()方法,(2)已被GC标记,(3)正在等待完成。这看起来不错。当我查看特定对象时,对该对象的唯一引用是java.lang.ref.Finalizer。Finalizer对象是为每个具有finalize()方法的对象创建的,无论该对象是否被GC处理过。所以看起来没有什么能阻止这个D
当我尝试用它分析我们的应用程序时,VisualVM崩溃了,但是如果我可以将我从我们的应用程序完成的jmap内存转储加载到VisualVM中,我可能无需将VisualVM附加到我们的应用程序就可以获得我需要的答案在运行时。那么,有没有办法做到这一点? 最佳答案 打开VisualVM,单击File->Load..并选择您的jmap文件。如果没有加载,我猜你的文件有问题。 关于java-我可以将hprof/jmap转储与VisualVM进行比较吗?,我们在StackOverflow上找到一个类
长话短说,一些同事正在运行一个非常旧的设置(x86_64中的oc4jjdk1.5.6)和一个恰好是关键任务的应用程序。他们最近尝试部署应用程序的新版本,但一旦他们这样做,java进程就会抛出核心转储并死掉。问题是,核心转储似乎没问题,gdb可以打开它们,但是jmap和其他工具拒绝处理它们:#/usr/java/jdk1.5.0_06/bin/jmap/usr/java/jdk1.5.0_06/bin/javacoreAttachingtocorecorefromexecutable/usr/java/jdk1.5.0_06/bin/java,pleasewait...Erroratta
我们的glassfish实例每两周关闭一次,并出现java.lang.OutOfMemoryError:PermGenspace。我将PermGen空间增加到512MB,并使用jstat-gc开始转储内存使用情况。两周后,我得出了下图,显示了PermGen空间是如何稳步增长的(x轴上的单位是分钟,y轴上的单位是KB)。我尝试在谷歌上搜索某种可以查明错误的分析工具和一个关于SO提到的jmap的线程,事实证明它非常有用。在从jmap-permstats$PID转储的大约14000行中,大约有12500行包含groovy/lang/GroovyClassLoader$InnerLoader,
我们正在研究客户的生产服务器堆,以检测和解决内存泄漏问题。为此,我们定期使用jmap来收集必要的信息。但上周我们无法进行转储,因为它触发了EOF错误并关闭了Tomcat实例。我在互联网上进行了搜索,但没有找到有关此错误的任何具体信息。我们检测到它仅在使用GcFirst时发生垃圾回收算法。这是我们用来执行jmap的命令行:jmap-dump:format=b,file=heap.bin服务器上的Java版本:JDK1.7.0_7x64有没有人遇到过这种错误?可能缺少某些配置或需要java/jmap补丁。更新我们收集到的关于此错误的更多信息:[root]#jmap-dump:format=
我解决了一个奇怪的内存泄漏问题。它特定于Java8,不会发生在7u79上。我无权访问Java代码。我确切地知道哪个用户操作导致了泄漏,我知道泄漏是关于类(而不是堆)的,并且使用+TraceClassLoading+TraceClassUnloading很容易发现有问题的类:[Loadedcom.mastercard.mcwallet.sdk.xml.allservices.ShoppingCartRequest$JaxbAccessorF_oAuthTokenfrom__JVM_DefineClass__][Loadedcom.mastercard.mcwallet.sdk....th
查看PID信息首先启动一个服务 使用jps和jps-l的区别,使用jps-l能够显示出服务的名称 熟悉JVM调优中常用的工具JMAP、JSTAT和JSTACKJMAP、JSTAT和JSTACK是Java开发中常用的工具,用于分析和调试Java应用程序。它们的使用场景如下:JMAP:JMAP用于生成Java堆转储快照,以便分析Java应用程序的内存使用情况。它可以提供关于对象数量、类型、大小等信息,帮助识别内存泄漏或者内存溢出问题。JSTAT:JSTAT用于监视和收集Java虚拟机(JVM)的各种统计数据,例如垃圾回收情况、类加载情况、线程数量等。它可以实时显示这些统计数据,帮助开发人员了解应用
目录一.前言二. jps(JavaVirtualMachineProcessStatusTool)三.jstack四. jmap(MemoryMap)和jhat(JavaHeapAnalysisTool)五.jstat(JVM统计监测工具)六.hprof(Heap/CPUProfilingTool)七.总结一.前言 工欲善其事,必先利其器。在日常的企业级Java应用开发、维护中,我们可能会碰到下面这些问题:OutOfMemoryError,内存不足;内存泄露;线程死锁;锁争用(LockContention);Java进程消耗CPU过高等。那么如何快速找出问题根本原因及如何解决成了我们需要掌握