问题标签 [jhat]

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 回答
326 浏览

java - Java 1.6.0_24 中“jhat”的 OQL“唯一”功能的问题

这是我发布的第一个问题。我有一个相当复杂的 OQL 查询,它列出了我们包中加载的类的静态字段。我在针对 Java 1.6.0_24 的“jhat”运行查询时看到的一个问题是“unique”函数无法按预期工作。我预计

返回 ['a', 'b', 'c'] 但它返回 ['a'], wtf?

如果有人感兴趣,实际的完整查询是(用你喜欢的替换“com.mydomain”):

0 投票
3 回答
5536 浏览

java - Huge heap dump (11GB) - Jhat failed & Eclipse MAT needed help

We got a memory error in our EA and we used -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/path/to/some/dir to dump the heap at the time of OOM.

We had a heap memory of 12GB and perm gen of 256MB.

The heap dump is generated in the Linux box where we have our application running and its size is 11.5GB. We don't have privileges to download it to our local.

When we tried to analyze that 11GB heap dump using JHAT it thrown an OOM.

We tried the following commands from our Linux CLI.

For all the options its throwing an OOM exception after reading the dump for several minutes(>30 mins).

We googled it and found MAT as a powerful heap dump analyzer, but not a way to use it in LINUX.

Any suggestions would be of greater help. Thanks.

Modified:

Got MAT installed in Linux x86_64 machine but got following error when executed ./MemoryAnalyzer

I tried ./ParseHeapDump.sh ../java_pid1491.hprof this and got following error,

0 投票
2 回答
401 浏览

java - 使用 Jhat 堆内置对象

任何人都可以展示如何在 select 语句中使用 heap.heapForEachClass 的示例吗?如果您可以提供一些带有不同查询示例的链接(当然,除了 oqlhelp 页面中的那些 :)),那就太好了

0 投票
0 回答
802 浏览

java - 用 jhat 分析堆的内存开销是多少?

jhat 是分析 Java 堆转储的好工具,但对于大型堆,它很容易浪费大量时间。给 jhat 的运行时堆太小,可能需要 15 分钟才能失败并耗尽内存。

我想知道的是:根据 heapdump 文件的大小,我应该给 jhat 多少 -Xmx 堆是否有经验法则?现在只考虑二进制堆转储。

一些非常有限的实验表明它至少是堆转储大小的 3-4 倍。我能够使用 -J-mx12G 分析一个三并更改千兆字节的堆文件。

有没有其他人有更确凿的实验数据,或者了解 jhat 在运行时如何表示堆对象?

数据点:

  • 该线程表示 5 倍的开销,但我对后期模型 jhats (1.6.0_26) 的实验表明它并没有那么糟糕
  • 该线程表示 ~10x 开销
  • 一位同事支持 10x 理论:2.5gb 堆文件失败并显示 -J-mx23G
  • 另一位同事获得了 6.7 GB 的转储以使用 30 GB 的堆,开销为 4.4 倍。
0 投票
1 回答
1009 浏览

javascript - 为什么在 visualvm (jhat?) oql 中使用 javascript 有时会令人困惑?

我很想知道为什么 visualvm OQL 对以下语句有问题:

例外是:

相比之下,visualvm OQL 对以下任何示例都没有问题:

示例 1(注意“它”没有被引用):

示例 2(注意“it”被引用):

示例 3(“function(it)”出于某种原因在 OQL 中特别处理?):

我问这个是因为它似乎不直观,并且当我尝试创建可用的东西时,非直观行为的变化会出乎意料地出现并减慢我的速度。

0 投票
1 回答
700 浏览

java - jhat OQL AND 在 where 子句中

如何在 jhat OQL where 子句中做连词 [AND]?

我想这样做:

那就是 - 我想在他们的 canonicaldn 中找到所有包含 appTrust 的 X500Names。我需要空值检查,因为一些 canonicaldn 可以为空 [并且 jhat 在这种情况下会在 toString 处引发空指针异常]。

但是字面上的“和”不起作用。

顺便说一句,我使用过滤器功能解决了这个问题:

0 投票
2 回答
188 浏览

jmap - 我可以设置像 jhat 或 jmap 这样的配置文件以定期或在检测到异常时拍摄快照吗

所以基本上在我们的例子中,服务器神秘地关闭了,我们经常重新启动它,它开始正常工作。到目前为止,我们还没有能够建立一个模式。查看线程转储确实有帮助,但我们也想分析内存使用情况。是否可以将这些工具设置为定期运行(以便它们定期保存快照)或在检测到异常或崩溃时运行

0 投票
3 回答
1166 浏览

java - Java heapdump 分析查找实例化对象的源

我正在使用 jvisualvm 分析堆转储。从报告中我可以看到类、实例数和占用的大小。

我想知道的是 - 这些对象的来源(哪个类实例化)。对于给定的对象,如果我可以知道所有源类以及每个类创建的实例数,我想很容易识别出不好的候选对象。

这可能吗?如果是这样,是否有比其他工具更好的工具来提供此类信息?

0 投票
2 回答
524 浏览

java - 修复java内存泄漏的学习网站

学习修复 java 内存泄漏的最佳地点是什么?我一直试图通过 NET 找到好的资源,但令我失望的是,我发现正在讨论的玩具示例。我还能够解决小型玩具转储问题,但现实世界的应用程序转储更具挑战性并且几乎没有提供任何线索。

我尝试过 Jhat、JMap、VisualVM 和 MAT 等工具。

学习修复 Java 内存泄漏的最佳地点是什么?也欢迎推荐一本书。

提前致谢。

0 投票
5 回答
1399 浏览

java - 为什么 GC 不收集我的对象?

我有一个 java 程序,它不断调用java.util.zip压缩/解压缩数据。它会在几秒钟内耗尽内存。我有一个内存转储,jmap我正在查看它jhat

终结器摘要显示Total instances pending finalization: 0。如果我理解正确,我没有任何对象 (1) 具有 finalize() 方法,(2) 已被 GC 标记并且 (3) 正在等待最终确定。这似乎很好。

当我查看特定对象时,对该对象的唯一引用是java.lang.ref.Finalizer. Finalizer 对象是为每个具有 finalize() 方法的对象创建的,无论该对象是否被 GC 处理。所以看起来没有什么能阻止这个Deflater对象被 GC 处理。

0x7f4aeb7a35d0 处的对象

java.util.zip.Deflater@0x7f4aeb7a35d0 的实例(51 字节)

对该对象的引用:

java.lang.ref.Finalizer@0x7f4aeb8607c8 (64 bytes) : 字段引用

程序在运行中被 暂停System.in.read()。一段时间后内存使用量不会下降。

更新:

我应该说清楚。内存转储显示许多对象没有经过 GC,但没有其他对象(终结器对象除外)引用它们。我试图找出为什么他们没有被 GC'ed。