问题标签 [jmap]

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

java - jmap 在 Java 7 下显得较慢,减慢 JVM

我们使用 jmap 来测量在 Java 6 下运行的大型多服务器应用程序的堆大小已经有 2 年了。我们每分钟进行一次测量。每次测量(经过时间)不到 1 秒。

我们现在正在 Java 7 下测试同一个应用程序。现在突然间 jmap 经常需要 10 秒、20 秒,有时甚至更长,并且在那段时间里它似乎减慢了 JVM 的速度(甚至可能停止!)。

我们在 jmap 输出中看到的唯一区别(在 Java 6 和 Java 7 之间)是关于有多少字符串被实习的附加信息。(这似乎是较慢的部分。)

有谁知道发生了什么,或者 jmap 或 Java 7 中发生了什么变化可能导致这种情况?

我们正在测试使用“jstat -gc”来获取相同的信息,到目前为止,这似乎要快得多,并且似乎不会导致我们在 jmap 中看到的应用程序变慢。关于如何快速测量堆大小还有其他建议吗?

欢迎任何想法,在此先感谢。

0 投票
1 回答
14989 浏览

java - 如何使用java内存直方图“jmap”

我们有在生产中运行的 java 流服务器,它需要大约 10GB 的 RAM 才能运行,所以我们安装了 32GB。内存逐渐增加,直到达到限制并弹出内存不足异常。

我很难确定哪些对象随着时间的推移而累积,因为直方图和内存转储数字与系统报告的内存使用情况不匹配,即 java 进程占用的内存略高于最大 20GB(因此内存不足异常是合理的),但直方图和内存dump 显示总共使用了 6.4GB。

如何获取未在直方图中显示的未知占用段中的内存信息?

我使用jmap -J-d64 -histo <pid> > <file>命令生成直方图。

进程映射了以下内存段,按大小排序

jmap 报告的所有 java 对象的总大小适合0x61F580000: 6666.5MB段。

我的猜测是,较大的段0x2DE000000: 13333.5MB包含泄漏的对象,因为直方图显示了此应用程序的正常内存使用情况。

有没有办法找出什么占用了未包含在直方图中的其他内存?

如何检测服务器的闭源部分是否使用本机扩展来分配系统内存而不是 java 内存?在那种情况下,我们不会看到内存不足的异常,对吧?

这是 htop 输出:

这是部分直方图输出:

java版本是:

0 投票
0 回答
86 浏览

java - java Swing 和 Geotools10.X 中 JMapPane 中的对齐

我在 jmap 窗格中显示绘图时遇到问题...

我有一个使用geotools 10和 java swing编写的应用程序。我们正在使用 JMapPane 来显示形状文件映射。当用户单击绘图时,会打开一个新选项卡,并在此处显示绘图的详细信息。第一次它可以正常工作,但是在下一次单击时,绘图会从JMapPane的窗口中消失,我们必须拖动 JMapPane 来搜索绘图。

所以我想知道每次单击绘图时如何在 JMapPane中心显示地图。

0 投票
1 回答
853 浏览

java - 单击获取堆转储对话框时,来自 Eclipse ide 的内存分析未列出任何本地进程 ID

使用来自 eclipse ide (kepler) 的内存分析器,我试图在程序运行时从本地运行的 VM 获取堆转储,但是获取堆转储对话框没有列出任何要选择的 pid。我尝试配置 hdrof jmap 转储提供程序

-jdkhome C:\Program Files\Java\jdk1.8.0_05\bin

但什么也没发生。任何解决方案。

谢谢。

0 投票
1 回答
282 浏览

java - 如何在 JMapViewer 中表示路由

我使用 JMapViewer 在我的 java 桌面应用程序中绘制地图。我会知道是否存在一些方法,我可以使用这些方法在汽车路径之后绘制到点之间的最短路径。

0 投票
0 回答
364 浏览

java - Java Jmap 转储挂起而不创建文件

我正在尝试使用 jmap 对进程进行转储。以下 jmap 命令...

返回

它永远存在的地方,并且不制作文件。我尝试在正常执行期间进行转储,尝试在 X 次执行后使程序通过循环筛选,并通过 Eclipse 调试模式暂停进程。无论如何,我无法检索转储文件。

0 投票
1 回答
1316 浏览

java - 如何将核心文件转换为 hyprof 文件

最近我们的一个 jvm 崩溃了。生成了一个核心文件。我想看看那个文件并找出崩溃的原因。但是我无法分析核心。我使用jmap来分析它。并写了命令-:

jmap -dump:format=b,file=heap.hprof 核心 22234

但我不断收到异常:

正在从可执行核心附加到核心 22234,请稍候...附加到核心文件时出错:Windbg 错误:OpenDumpFile 失败!

我的 Windows 系统中有核心文件。想在那里分析它。不知道该怎么做。请帮忙。谢谢

0 投票
0 回答
315 浏览

java - 几次 Full GC,堆大小达到 XmX,即 1.2g,但堆转储仅显示 200m 的数据

我们注意到 GC 日志中频繁出现 Full GC 条目(超过 3-4 小时)。我们的 XmX 是 1.2g,所有完整的 GC 都没有恢复多少。VM 保持在 1 g 左右。

为了查看堆中的内容,我们进行了堆转储,但在内存分析器工具中,我们看到只有 30% 被占用,剩余 70% 空闲。

堆文件大小为 1g。

我们使用 :live 选项进行堆转储。

有没有其他方法可以获得堆的完整快照?

0 投票
0 回答
438 浏览

java - 运行 jinfo 和 jmap 时的灾难性错误

当我对任何 Java 进程运行 jinfo 或 jmap 时,它将“暂停”Java 进程。对于长时间运行的过程,它是 100% 复制的。

以下是详细步骤:

  1. 选择一个运行超过 25 天的 Java 进程(它是有线的,因为这对新进程不起作用)。
  2. 运行 ps 以检查进程的状态,应该是预期的“Sl”。
  3. 运行 jinfo 或 jmap 到这个进程(BTY,jstack 没有这个问题)。
  4. 运行 ps 以检查进程的状态。这次它变为“Tl”,表示已停止,并且该进程不响应任何请求。

这是我们流程的输出:

这可能是 JVM 的错误,但我向 oracle 报告此问题后没有得到任何回应。所以我希望这里的一些JVM专家可以提供帮助。

$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01,混合模式)

0 投票
8 回答
124089 浏览

java - 如何在 IntelliJ 中分析堆转储?(内存泄漏)

我已经从我的 java 应用程序中生成了一个堆转储,该应用程序已经使用该jmap工具运行了几天 -> 这会导致一个大型二进制堆转储文件。

如何在 IntellIJ IDEA 中执行此堆转储的内存分析?

我知道有适用于 Eclipse 和 Netbeans 的工具,但如果可能的话,我宁愿使用 IDEA。

分析的基本结果将告诉我每个类在内存中每个对象的实例数,以便我能够开始调试内存泄漏。