我正在尝试解决permgen泄漏问题,并想就如何解释jmap-permstat的输出征求大家的意见。假设我有一个jmap-permstat报告,如下所示:class_loaderclassesbytesparent_loaderalive?type479125941568nulllive0x00000007203ed508000x00000007203ed228deadcom/example/object/SomeObjectType$FirstClassLoader@0x0000000something10x000000071dc17620130560x0000000705e692a
来自oracleTheServerJREincludestoolsforJVMmonitoringandtoolscommonlyrequiredforserverapplications,butdoesnotincludebrowserintegration(theJavaplug-in).从服务器端工具的使用来看,监控排名靠前的工具是jstack、jvisualvm、jstat、jconsole;服务器jre包的jdk/bin中缺少所有内容。关于这种捆绑背后的合理性的任何想法。编辑这种情况仅适用于“serverjre8”。对于“serverjre7”,所有这些工具都存在。
当我使用进行heapdump时出现以下异常jmap-F-dump:format=b,file=/tmp/heapdump/before.hprof10737AttachingtoprocessID10737,pleasewait...Exceptioninthread"main"java.lang.reflect.InvocationTargetExceptionatsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod)atsun.reflect.NativeMethodAccessorImpl.invoke(NativeM
我试图在我的CentOS服务器上使用jmap命令,但它一直告诉我找不到该命令,即使我已经安装了JDK。这是命令java-version的输出:javaversion"1.7.0_25"OpenJDKRuntimeEnvironment(rhel-2.3.10.4.el6_4-x86_64)OpenJDK64-BitServerVM(build23.7-b01,mixedmode)我该如何解决这个问题? 最佳答案 您应该能够在java-1.8.0-openjdk-devel-debug或java-1.7.0-openjdk-中找到jm
在少数情况下,我们的应用程序使用了大约12GB的内存。我们尝试使用jmap实用程序获取堆转储。由于应用程序正在使用一些GB的内存,它会导致应用程序停止响应并导致生产出现问题。在我们的例子中,堆使用量在6小时内突然从2-3GB增加到12GB。为了找出内存使用趋势,我们尝试在重新启动应用程序后每隔一小时收集一次堆转储。但如前所述,由于使用jmap会导致应用程序挂起,我们需要重新启动它,并且我们无法获得内存使用的趋势。有没有办法在不挂起应用程序的情况下获取堆转储,或者是否有除jmap之外的实用程序来收集堆转储。对此的想法非常感谢,因为如果不了解内存使用趋势,则很难解决此问题。注意:我们的应用
我了解newgen/oldgen/permgen之间的区别,但我不知道“ToSpace”和“FromSpace”是什么。我看到我的“FromSpace”使用率达到99.8%,而“ToSpace”似乎始终保持在0%的使用率。 最佳答案 VM中使用的垃圾收集算法中的两个区域。Java细节可在此处找到:HowGarbageCollectionworksinJava以及关于“从太空”和“到太空”的一般解释:WPThemoststraightforwardapproachisthesemi-spacecollector,whichdatest
当jmap进行内存转储时,我的java应用程序是否继续运行? 最佳答案 我在尝试在生产机器上使用jmap创建hprof文件时遇到了问题,这需要很长时间,并且很自然地将javawebapp锁定了很长时间。我找到了这个页面:http://blogs.atlassian.com/2013/03/so-you-want-your-jvms-heap/其中解释了您还可以使用gdb(在linux系统上)转储java进程的核心。使用此核心文件,您可以生成hprof文件以在单独的进程中进行分析,从而防止您的java服务器进程被中断这么长时间。如果您
我想从受监控的应用程序内部以编程方式获取与jmap-histo的输出等效的内容。我看到可以通过HotSpot诊断bean触发堆转储,但我看不到如何获取直方图数据。有可能吗? 最佳答案 它可能不是最好的示例/代码,但请查看this(我认为它只适用于HotspotJVM) 关于java-如何以编程方式获取jmap直方图?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9417038/
我今天一直在试验jmap-histo和jmap-dump按此顺序运行时jmap-dump:format=b,file=heap.1[pid]jmap-dump:live,format=b,file=heap.2[pid]jmap-dump:format=b,file=heap.3[pid]heap.3更类似于heap.2而不是heap.1。特别是,我对heap.1感兴趣的“死”对象在heap.3中不存在。看到这一点,我开始寻找能够告诉我应该期待什么的文档。我设法得到的最接近的是thisdiscussion,briand和alanb的评论暗示在实践中我可以预期当我使用live选项时会发生
这个问题在这里已经有了答案:Whatdothosestrangeclassnamesinajavaheapdumpmean?(4个回答)关闭8年前。我正在使用jmap来获取堆的直方图。我不确定被称为“[C”、“[S”、“[I”和“[B”的对象是什么。有人知道吗?$jmap-histo3299num#instances#bytesclassname----------------------------------------------1:980419070632[Ljava.util.HashMap$Entry;2:380746216960[Ljava.lang.Object;3:6