我知道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
一言以蔽之我有一个程序随着时间的推移逐渐使用越来越多的内存。我正在使用jmap和jhat来尝试诊断它,但还不够准确。背景该程序是一个长期运行的服务器,由hbase数据存储支持,为其他一些东西提供节俭服务。然而,在运行几天后,它最终会达到分配的堆限制,并且几乎所有时间都花在垃圾收集上来回Swing。似乎在某处保存了大量数据的引用到目前为止我做了什么在摆弄jstat和jconsole之后,我最终使用运行进程的jmap进行堆转储,并通过jhat运行它,简单的数字加起来没有接近内存利用率jmap-F-dump:live,format=b,file=heap.dump12765jmap-F-du
JDK工具详解之(2)一.jVisualVmjdk9及以上自带visualVM,需要手动安装,下载地址VisualVm。下载后修改etc/visualvm.conf文件,配置jdk路径即可1.1安装VisualGCJavaVisualVM默认没有安装VisualGC插件,需要手动安装,JDK的安装目录的bin目露下双击jvisualvm.exe,即可打开JavaVisualVM,点击菜单栏工具->插件安装VisualGC.安装完成后重启JavaVisualVM,VisualGC界面自动打开,即可看到查看本地JVM中堆内存的分代情况1.2监控页面1.2.线程界面1.3sampler界面除了sam
目录一.前言二. jps(JavaVirtualMachineProcessStatusTool)三.jstack四. jmap(MemoryMap)和jhat(JavaHeapAnalysisTool)五.jstat(JVM统计监测工具)六.hprof(Heap/CPUProfilingTool)七.总结一.前言 工欲善其事,必先利其器。在日常的企业级Java应用开发、维护中,我们可能会碰到下面这些问题:OutOfMemoryError,内存不足;内存泄露;线程死锁;锁争用(LockContention);Java进程消耗CPU过高等。那么如何快速找出问题根本原因及如何解决成了我们需要掌握
在我的工作中,我们遇到了一个难以重现的OOM问题。或者,更准确地说,很容易在一个系统上重现,使该系统无法使用,但在其他任何地方都很难重现,只要输入相同。应用程序正在使用服务包装器作为服务运行。我们确实设法通过在OOM上输出堆转储文件的选项来更改配置以启动它,但不幸的是,它们被截断了,很可能是由于服务包装器超时并在写入文件时终止了进程。这很明显,因为最大内存设置为1GB,而hprof文件小到700MB,这对于OOM时的整个堆来说太小了。额外配置包装器以给java进程更长的时间来写出堆,这将需要很多步骤,但我们正在使用这两个选项来实现这一点:wrapper.jvm_exit.timeout
我有一个64位JVM使用-XX:-HeapDumpOnOutOfMemoryError选项转储的6.5GBHprof文件。我把它放在一台16GB的64位机器上,并试图将它放入jhat,但它总是内存不足。我尝试传入jvmargs以获得最小设置,但它拒绝任何最小值,并且似乎在达到最大值之前就耗尽了内存。内存不足的jvm会转储一个如此大的堆,以至于无法将其加载到具有两倍内存的机器上,这似乎有点愚蠢。有没有办法让这个运行,或者可能摊销分析? 最佳答案 使用相当于jhat-J-d64-J-mx16gmyheap.hprof的命令来启动jhat
我有一个64位JVM使用-XX:-HeapDumpOnOutOfMemoryError选项转储的6.5GBHprof文件。我把它放在一台16GB的64位机器上,并试图将它放入jhat,但它总是内存不足。我尝试传入jvmargs以获得最小设置,但它拒绝任何最小值,并且似乎在达到最大值之前就耗尽了内存。内存不足的jvm会转储一个如此大的堆,以至于无法将其加载到具有两倍内存的机器上,这似乎有点愚蠢。有没有办法让这个运行,或者可能摊销分析? 最佳答案 使用相当于jhat-J-d64-J-mx16gmyheap.hprof的命令来启动jhat
我在这里尝试了一个工具jhat来测试我的java内存使用情况。它读入一个堆转储文件并将信息打印为html。但是,表格显示如下:ClassInstanceCountTotalSizeclass[B3658549323821class[Lcom.sun.mail.imap.IMAPMessage;79016254336class[C12451212832896class[I2308011923504class[Ljava.lang.Object;136146664528classjava.lang.String1089822179640classjava.lang.Integer21950
我在这里尝试了一个工具jhat来测试我的java内存使用情况。它读入一个堆转储文件并将信息打印为html。但是,表格显示如下:ClassInstanceCountTotalSizeclass[B3658549323821class[Lcom.sun.mail.imap.IMAPMessage;79016254336class[C12451212832896class[I2308011923504class[Ljava.lang.Object;136146664528classjava.lang.String1089822179640classjava.lang.Integer21950