问题标签 [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 投票
3 回答
1486 浏览

java - Tomcat 会话的 Java 类是什么?

我用对我的tomcat服务器进行了JVM 堆转储,我想弄清楚内存中所有会话的大小。jmap

因此,我想知道我应该寻找什么类型的对象来估计会话大小。

谢谢

0 投票
2 回答
7835 浏览

java - 定位用死的 Groovy 代码填充 PermGen 的代码

我们的 glassfish 实例每两周关闭一次,有一段时间使用java.lang.OutOfMemoryError: PermGen space. 我将 PermGen 空间增加到 512MB,并开始使用jstat -gc. 两周后,我想出了下图,它显示了 PermGen 空间是如何稳定增长的(x 轴上的单位是分钟,y 轴是 KB)。 PermGen 使用量增加图

我尝试在谷歌上搜索某种可以查明错误的分析工具,并且在此处提到的 jmap 上的一个线程,这被证明是非常有帮助的。在从 转储的大约 14000 行中jmap -permstats $PID,包含大约 12500行groovy/lang/GroovyClassLoader$InnerLoader,指向我们自己的 Groovy 代码或 Groovy 本身的某种内存泄漏。我必须指出,Groovy 占相关代码库的比例不到 1%。

下面的示例输出:

那么我怎样才能继续了解更多关于是什么代码导致这种情况的呢?

这篇文章中,我推断我们的 Groovy 代码在某处动态创建类。从 jmap 的转储中,我可以看到大多数死对象/类(?)具有相同的 parent_loader,尽管我不确定在这种情况下这意味着什么。我不知道如何从这里开始。

附录

对于后来者,值得指出的是,接受的答案并不能解决问题。通过不存储太多类信息,它只是将重新启动之前所需的时间延长了十倍。真正解决我们问题的是摆脱生成它的代码。我们使用了验证(按合同设计)框架OVal,其中可以使用 Groovy 编写自定义约束作为方法和类的注释。在纯 Java 中删除有利于显式前置和后置条件的注释很无聊,但它完成了工作。我怀疑每次检查 OVal 约束时都会创建一个新的匿名类,并且以某种方式关联的类数据导致内存泄漏。

0 投票
1 回答
6547 浏览

java - Jmap堆转储,是否包括年轻代?

快速提问

jmap 堆转储是否只包括老一代,还是包括年轻一代?


长解释

我有 2 个堆转储(jmap -heap:format=b 9999):

  • 我的一台无负载服务器(无 HTTP 请求)
  • 一个同时工作 50% CPU,高负载(基准测试)

现在,第一个转储显示的堆大小比第二个大(我认为这很奇怪)。

这可能是因为垃圾收集器经常运行(是的,JVM 几乎满了),年轻一代(高负载)经常变化吗?老一代已满 99%,我注意到年轻一代的空间使用情况变化很大。

所以这意味着我在 GC 完成他的工作后立即进行了第二次转储,这就是它的大小更小的原因。我对吗 ?

附加信息

Java 参数:

0 投票
1 回答
1447 浏览

java - jdk1.6 JMAP.EXE:远程线程因未知原因失败

使用以下批处理文件获取在 Windows 控制台 shell 中运行的 Java 服务的核心转储时出现此错误:

这是脚本 (-XX:OnError="script.bat") :

我可以运行 jconsole.exe ,附加到进程并轻松转储核心。为什么从命令行不那么容易?我知道 JMap 的 linux 版本有更多的选项和功能。这就是我在这里遇到的情况:Windows 版本的 JMap 不能做这个简单的事情吗?

0 投票
1 回答
16639 浏览

java - 使用 live 选项时,jmap 是否强制进行垃圾收集?

我一直在尝试jmap -histojmap -dump今天

按此顺序运行时

heap.3类似heap.2超过heap.1。特别是,我感兴趣的“死”对象heap.1不在heap.3.

看到这一点,我开始寻找可以告诉我应该期待什么的文档。我设法得到的最接近的是这个讨论,briand 和 alanb 的评论暗示在实践中我可以预期当我使用 live 选项时会发生这种 GC;但答案是五年前的,论坛上的帖子似乎有点非正式的规范。

我在哪里可以找到记录的当前行为?

0 投票
1 回答
3095 浏览

java - 为什么我只会看到 jmap -permstat 中的“死”类加载器(引导程序除外)?

我们一直在将应用程序中的 permgen 内存空间推得越来越高,我试图找出我们是否有某种泄漏进入 permgen 区域。我们不进行热取消部署/重新部署操作,但我们有很多代理,包括动态的和 CGLIB 生成的。我们还做了一些复杂的类加载器位来支持各种用例,我怀疑这些也可能导致 permgen 浪费。

所以我在我们正在运行的应用程序上运行 jmap -permstat,希望能够深入了解可能会填满我们的 permgen 空间的内容。(我还运行了一个包含活动对象和死对象的普通堆转储,以便我可以追踪可能来自 permstat 输出的线索)。

但是,在 jmap permstat 列出的 2400 个类加载器中,除了引导类加载器之外的所有类加载器都被列为“死”。这没有任何意义,因为该应用程序绝对是实时的,并且正在运行。

我的理解是,如果 jmap 有资格进行垃圾收集,jmap 会将类加载器报告为“死”,但我在这里一定是错的......

我错过了什么?这里的“死”是什么意思?除了我在这里可能存在的误解之外,谷歌搜索并没有提供很多答案。

0 投票
3 回答
1595 浏览

java - “共享对象内存”与“堆内存” - Java

Java中的“共享对象内存”和“堆内存”有什么区别。是否像“共享对象内存”是“堆内存”的超集?

这个问题的来源是 jmap 的文档。它提供了打印“共享对象内存”和“堆内存”的不同选项。

0 投票
1 回答
17640 浏览

java - jmap直方图中的这些对象是什么?

我正在使用 jmap 来获取堆的直方图。我不确定被称为“[C”、“[S”、“[I”和“[B”的对象是什么。有人知道吗?

0 投票
0 回答
800 浏览

jquery - Zend 谷歌地图和 Jquery

我正在使用 Zend fw,我试图在我的一个页面中实现一个谷歌地图应用程序,但没有成功。地图不显示。我已经使用本教程尝试了 Zend 方式:

http://www.bitconsultants.net/2010/geocoding-with-google-maps-and-the-zend-framework/

不成功:地图未显示在页面上。

我选择了 JQuery 方式并使用了 gMap。这里也地图没有显示。

我也试过jMap。这会产生错误:“此浏览器被报告为与 Google 地图不兼容。”

我之前在其他网站上应用了谷歌地图(虽然没有 Zend)并且一切正常。有没有人可以提供有关问题可能出在哪里的线索?请。

我认为地图的代码没有直接相关的问题,因为它与其他地方使用的代码相同。但是,如果您需要查看一些代码,请询问。

先感谢您。

});

0 投票
3 回答
40636 浏览

java - 想确认tomcat正在使用的堆大小

我在ubuntu上,我需要确认tomcat正在使用堆大小设置。

我怎样才能做到这一点?

我尝试了jmap,但似乎不在服务器上,我可以以某种方式单独下载它吗?