问题标签 [heap-dump]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2355 浏览

java - 如何以编程方式获取 jmap 直方图?

我想jmap -histo从受监视的应用程序内部以编程方式获得等效的输出。我看到可以通过 HotSpot 诊断 bean 触发堆转储,但我看不到如何获取直方图数据。是否可以 ?

0 投票
2 回答
128 浏览

java - 内存管理分析

我正在为我的 Java Web 应用程序进行内存管理分析,

在启动我的 tomcat 之前,RAM 中的可用内存约为 595 MB,一旦我启动服务器,可用内存将变为 151 MB。当我进行堆转储时,对象占用了 262 MB。

那么仅tomcat会占用剩余的181 MB吗?

另一个问题是,我对 500 个用户进行了负载测试。可用内存达到 8MB,当我在这里进行堆转储时,大约是 265MB。所以可用空间 151 MB 减少到 8MB,可能是什么原因

请注意,我使用top命令检查 RAM 中的空闲内存。

0 投票
1 回答
7513 浏览

java - 解析堆转储文件

我有一个应用程序,显然我创建了太多对象,我收到以下消息:

java.lang.OutOfMemoryError: Java heap space Dumping heap to java_pid2468.hprof ... Heap dump file created [1087703293 bytes in 18.711 secs] 线程“main”中的异常 java.lang.OutOfMemoryError: Java heap space

但是我在MAT中安装了插件,我想看看我构建了多少个对象,哪些对象占用了最多的内存。但是,当我想解析 hprof 文件时,我收到此错误消息:

在以下期间发生内部错误:“从 'C:\Users\sekulicd\workspace\Csv_validation_MyIsam\java_pid2468.hprof' 解析堆转储”。Java 堆空间

hprof 文件的大小为 1,087,703,293 字节,我需要这些问题的答案:

  1. 由于 hprof 文件大小导致解析失败?
  2. 我可以只为那些没有发生错误“java.lang.OutOfMemoryError: Java heap space”的项目解析 hprof 文件吗?
  3. 有没有办法解析这个文件(1,087,703,293 字节)?
0 投票
2 回答
1540 浏览

c# - 有什么方法可以在 C# 中的 OutOfMemoryException 上创建堆转储/直方图?

回到 Java 世界,我能够指定 JVM 应该在第一个 OutOfMemoryError 上创建一个堆转储文件。C#中有什么等价的吗?

堆转储将是理想的,但我会满足于直方图。

如果无法自动执行此操作,是否有办法挂钩此异常,然后手动遍历堆?

0 投票
1 回答
1223 浏览

java - 我可以对堆转储文件运行 Java 垃圾收集吗?

我有一个巨大的 Java 堆转储文件。它还包含(我相信)无法访问的对象,这些对象将是 JVM 收集的垃圾(或者希望如此)。

有没有一种工具可以让我对这个文件运行垃圾收集器,这样我就可以

  1. 摆脱无用的数据
  2. 使用各种算法验证/模拟垃圾收集,看看它们的工作情况如何
  3. 识别垃圾收集问题
0 投票
4 回答
2040 浏览

java - 在已经崩溃的系统上进行堆转储

由于内存泄漏,我的 tomcat 应用程序崩溃了。我想在崩溃的系统/jvm 上进行堆转储。可能吗?我用的是windows/tomcat 6 怎么办?

0 投票
1 回答
3175 浏览

android - 如何分析 Android 上的堆转储?

我在 logcat 中收到很多“dalvikvm: GC_CONCURRENT ...”消息,谷歌搜索导致我下载了 Eclipse 内存分析器...我已经知道如何使用它,但我不知道如何去理解它。我以前从未处理过内存泄漏,所以请耐心等待。

“泄漏嫌疑人”包括“系统类加载器”加载的“android.content.res.Resources”、“android.graphics.Bitmap”和“org.apache.harmony.xnet.provider.jsse.TrustManagerImpl”。我真的不知道这意味着什么,也不知道这对我有什么帮助;我什至不在我正在尝试制作的应用程序中使用位图。

这应该如何帮助我?

0 投票
1 回答
707 浏览

java - JMAP -dump 未在 java 上执行:runtime.exec()

我试图执行 'jmap -dump:format =b; file" 命令在 runtime.exec() 中,但它不会在其他命令(如日期、密码)工作正常的地方执行。有人知道为什么吗?

公共静态无效命令(字符串 s){

0 投票
2 回答
813 浏览

garbage-collection - 执行手动 GC 后生成堆转储显着减少

这是我在堆栈溢出论坛的第一篇文章。我们最近遇到了一些 Java OOME 问题,并且使用 jvisualvm、yourkit 和 eclipse mat 工具能够识别和修复一些问题......

在分析过程中观察到的一种行为是,当我们使用 jconsole 或 jvisualvm 手动创建 heapdump 时,jvm 中使用的堆大小在生成 heapdump 后显着减少(从 1.3 GB 到 200 MB)。有人可以就这种行为提出建议吗?这是一个变相的福音,因为每当我看到已用堆大小大于 1.5GB 时,我都会执行手动 GC,系统会恢复到较低的已用堆大小,从而导致 jvm 不会重新启动。

让我知道任何其他详细信息

谢谢大师

0 投票
1 回答
1324 浏览

unix - 是否可以动态选择是否生成堆转储?

我们有一个应用程序部署到在 UNIX 上运行的 WebSphere 服务器上,我们遇到了两个问题:

  1. 几分钟后恢复的系统挂起 - 要进行调查,我们将需要线程转储(javacore)。
  2. 无法恢复并需要重新启动 WebSphere 的系统挂起 - 为了进行调查,我们将需要线程转储和堆转储。

问题是:当系统挂起时,我们不知道是问题 1 还是问题 2。

理想情况下,我们希望先手动生成线程转储,然后等待系统是否恢复。如果没有,那么我们在重新启动 WebSphere 之前生成线程转储和堆转储。

我知道kill -3(或kill -QUIT)命令。该命令将仅生成线程转储(如果参数IBM_HEAPDUMP=false),或线程转储和堆转储(如果IBM_HEAPDUMP=true)。但是,IBM_HEAPDUMP必须在 WebSphere 启动之前设置,并且在 WebSphere 运行时不能更改。

IBM_HEAPDUMP关于参数和命令,我的理解是否正确kill -3

另外,是否可以按照我描述的方式获取日志?(即在生成 JVM 诊断时,选择是否即时生成堆转储)