当前位置: 首页 > 知识库问答 >
问题:

从二进制堆转储提取JVM正常运行时间

长孙作人
2023-03-14

我正在分析几个堆转储,并对从堆转储获得JVM正常运行时间(或启动时间)的方法感兴趣。使用eclipse memory analyzer,我可以很容易地获得系统属性和类路径,但却找不到正常运行时间的方法

共有1个答案

漆雕伟志
2023-03-14

您可以尝试搜索sun.util.calendar.ZoneInfoFile类,它包含long currt字段。它的值与VisualVM中的JVM启动时间匹配(在我的例子中,至少与Oracle JVM匹配):

Type|Name |Value
---------------------
long|CURRT|1578570465
---------------------

epoch转换器显示它是2020/1/9 6.47 am EST(GMT-5),这是我启动Java应用程序的时间。为以防万一,hprof文件在几分钟后,即7.03am创建。

 类似资料:
  • 我正在分析几个堆转储,并对从堆转储获取jvm参数的方法感兴趣。使用eclipse memory analyzer我可以很容易地获得系统属性和类路径,但我想知道是否有方法获得其他参数,如-xms-xmx等。

  • 我正在尝试将Java进程的Linux核心转储转换为堆转储文件,适合用Eclipse MAT进行分析。根据这篇博客文章,适应于较新的OpenJDK 12,我创建了一个核心转储,然后运行将转储转换为HPROF格式: 核心转储文件是22GB,而堆转储文件只有3MB,因此命令可能无法处理整个核心转储。此外,Eclipse MAT无法打开堆转储文件,并显示以下消息:

  • 问题内容: 我正在尝试诊断Sun One 9.1应用服务器中的PermGen内存泄漏问题。为此,我需要获取JVM进程的堆转储。不幸的是,JVM进程是Windows上运行的1.5版。显然,没有一种触发堆转储的方法支持该设置。我可以让JVM在内存耗尽或关闭时进行堆转储,但是我需要能够在任意时间进行堆转储。 经常提到的两种获取堆转储的方法是使用jmap或使用HotSpotDiagnostic MBean

  • 问题内容: 我知道JVM参数。我也知道,这将要求堆转储。 问题: 如何确保我首先进行完整的堆转储, 然后 在转储完成后强制重新启动(或终止)?是我最好的选择吗? 问题答案: JVM将首先转储堆,然后执行OnOutOfMemoryError命令(证明)。

  • 问题内容: 是否有可能仅从正在运行的nginx进程中获取nginx使用的配置? 获取conf文件路径。有时会显示出来,有时却不会。可能就像(与)一样 那么是唯一的解决方案吗? 从这个问题出发,是否可以直接从nginx进程中转储conf数据结构?或者至少转储conf文件路径? 问题答案: 从Nginx 1.9.2开始,您可以使用以下标志转储Nginx配置: —与相同,但另外将配置文件转储到标准输出(

  • 主要内容:1.图解对象分配过程,2.Minor GC、Major GC、Full GC,3.TLAB(线程私有缓存区域)1.图解对象分配过程 特殊情况 2.Minor GC、Major GC、Full GC 部分收集:不是完整收集整个Java堆的垃圾收集。其中又分为: 新生代收集(Minor GC/Young GC):只是新生代的垃圾收集 老年代收集(Major GC/Old GC):只是老年代的垃圾收集 混合收集(Mixed GC):收集整个新生代以及部分老年代的垃圾收集 整堆收集(Full