标签: heap-dump

JVisualVM可以"堆转储"按钮释放内存吗?

我有一个非常奇怪的问题.我正在开发一个基于Eclipse Equinox的OSGi应用程序; 它是使用OSGi Log Service(Equinox实现)开发的,现在我正在使用Apache Felix OSGi Log Service实现进行测试.

在API /代码方面,一切正常:OSGi日志服务是标准的,所以我可以毫无问题地从Equinox交换到Felix.

但是,我观察到了这种奇怪的行为:我启动了应用程序作为控制台程序,在控制台上查看日志输出,并将其附加到JVisualVM以分析内存使用情况; JVisualVM图显示了一个80 MB的已用堆.

13个小时后,平均堆大小达到220 MB,所以我决定分析堆转储,并按下"堆转储"按钮:在此操作之后,JVisualVM图显示使用的堆为20(分钟)-35 (最大)MB(?!?!),这个值是常数.

"堆转储"操作可以释放近200 mbs吗?如果是,为什么?

我从未在Equinox OSGi Log Service实现中看到这种行为,所以我怀疑Felix Log涉及这个问题......

谢谢

java memory jvisualvm heap-dump

6
推荐指数
2
解决办法
3891
查看次数

如何分析Websphere核心*.dmp文件和Snap*.trc文件?

全部,我的应用程序在websphere app server 7.0上运行.我得到了一些核心转储和跟踪文件,如

core.20110909.164930.3828.0001.dmp

Snap.20110909.164930.3828.0003.trc.

我的问题是,就像WAS生成的线程转储可以由IBM-Thread Dump Analyzer工具打开和分析一样

是否有工具可以由IBM或任何其他人打开上述文件?

谢谢,阿尤斯曼

java coredump analyzer heap-dump websphere-7

6
推荐指数
2
解决办法
3万
查看次数

以编程方式分析java堆转储文件

我想编写一个程序(最好用java)来解析和分析java堆转储文件(由jmap创建)。我知道有很多很棒的工具已经可以这样做(jhat、eclipse 的 MAT 等),但我想从我的应用程序的特定角度来分析堆。

在哪里可以阅读有关堆转储文件的结构、如何读取它的示例等等?搜索了一下没有发现什么有用的东西...

非常感谢。

java heap-dump

6
推荐指数
1
解决办法
4275
查看次数

如何使用 Eclipse OpenJ9 进行堆转储?

使用 Oracle 的 Hotspot JVM,它看起来jmap -dump:file=/tmp/dump.txt <pid>可以用来进行堆转储。

但是,Eclipse OpenJ9 不包含该jmap工具 - 如果您尝试将常规jmap与 OpenJ9 的 jvm 一起使用,则会出现异常:

Exception in thread "main" java.lang.ClassCastException: com.ibm.tools.attach.attacher.OpenJ9VirtualMachine incompatible with sun.tools.attach.HotSpotVirtualMachine
    at java.lang.ClassCastException.<init>(java.base@10.0.2-adoptopenjdk/ClassCastException.java:71)
    at sun.tools.jmap.JMap.executeCommandForPid(jdk.jcmd@10.0.2-adoptopenjdk/JMap.java:128)
    at sun.tools.jmap.JMap.dump(jdk.jcmd@10.0.2-adoptopenjdk/JMap.java:192)
    at sun.tools.jmap.JMap.main(jdk.jcmd@10.0.2-adoptopenjdk/JMap.java:110)
Run Code Online (Sandbox Code Playgroud)

那么,如何使用 OpenJ9 进行堆转储呢?

java jvm heap-dump openj9

6
推荐指数
1
解决办法
2717
查看次数

当 K8s healthcheck 重新启动 pod 时创建 JVM heapdump - 不会发生 OOM

我遇到过这样一种情况,突然发生很长的 GC 暂停,我需要找出突然内存分配的根源是什么。长时间的 GC 暂停(大约 30 秒)会导致 pod 连续多次 K8s 健康检查失败,并且 pod 会重新启动,而实际上并没有发生 OOM。我想在 K8s 实际重新启动 pod 之前创建堆转储。我意识到应该对某些外部持久安装进行转储。

我对如何导致堆转储发生的唯一想法是使用 preStop 挂钩。问题是,pod因健康检查失败而重启时,preStop钩子是否会被触发?

也许有一个更优雅的解决方案?

java jvm heap-dump kubernetes kubernetes-health-check

6
推荐指数
1
解决办法
6355
查看次数

在 kubernetes pod 中出现 OOM 时保留堆转储吗?

当 java 进程出现 OOM 且 pod 重新启动时,我需要保留堆转储。

我在 jvm 参数中添加了以下内容

-XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/dumps
Run Code Online (Sandbox Code Playgroud)

...并且emptydir安装在同一路径上。

但问题是,如果 Pod 重新启动并且它被安排在不同的节点上,那么我们就会丢失堆转储。即使 pod 被安排到不同的节点,如何保留堆转储?

我们正在使用 AWS EKS,并且我们有超过 1 个 Pod 副本。

有人可以帮忙解决这个问题吗?

amazon-web-services heap-dump kubernetes persistent-volumes amazon-eks

6
推荐指数
1
解决办法
5349
查看次数

如何分析大型堆转储?

如果只能为 JVM 分配 1.5GB,是否有分析大型 Java 堆转储 (2GB) 的工具?我不敢相信转储必须完全加载到内存中才能进行分析...

Eclipse MemoryAnalyzer 失败,IBM 工具也失败。

我现在需要在这里使用命令行工具吗?

java heap-dump

5
推荐指数
1
解决办法
3283
查看次数

在未捕获的异常上生成 Java 堆转储

当触发未捕获的异常时,我尝试生成堆转储。我尝试使用 jmap,但是因为发生异常时该过程已完成,所以这是不可能的。

使用 UncaughtExceptionHandler 也不行,因为我只有执行的程序的二进制文件。

谁能帮我?

编辑:重要的是该技术可通过命令行或类似方式使用,因为我需要自动化。不能使用 GUI

java jvm heap-dump

5
推荐指数
2
解决办法
2154
查看次数

是否可以从命令行触发Android堆转储?

我希望能够从命令行触发Android堆转储.那是否有命令?

具体来说,从命令行,而不是通过Montior或DDMS GUI

也许就像使用ddms或adb,例如ddms -head-dumpadb shell heapdump?AFAICT监视器和ddms始终以GUI模式启动,而adb没有堆转储命令.

更新:我试过这个,看起来很有希望,但它不起作用:

  1. adb jdwp
  2. adb forward tcp:8000 jdwp:1234 (1234的替换输出1)
  3. jmap -dump:format=b,file=heapdump.hprof localhost:8000

但即使堆摘要失败:

jmap -heap localhost:8000
Attaching to remote server localhost:8000, please wait...
Error attaching to remote server: java.rmi.ConnectIOException: error during JRMP connection establishment; nested exception is: 
        java.net.SocketTimeoutException: Read timed out
Run Code Online (Sandbox Code Playgroud)

android heap-dump

5
推荐指数
2
解决办法
1万
查看次数

如何检查堆转储 hprof 文件中的文件描述符泄漏

我有一个应用服务器堆转储 (hprof) 的实例。如何使用 visualvm 或任何其他工具检查泄漏的文件描述符?

我确实通过运行检查了正在使用的文件描述符

sudo lsof | grep java | wc -l
Run Code Online (Sandbox Code Playgroud)

当我运行以下 OOQL 时,我会得到一个 FileDescriptors 列表

select x from java.io.FileDescriptor x
Run Code Online (Sandbox Code Playgroud)

但是如何使用堆转储分析来查找滥用类?

java file-descriptor hprof heap-dump

5
推荐指数
0
解决办法
1004
查看次数