当前位置: 首页 > 面试题库 >

如何测量JVM启动时间?

公羊宗清
2023-03-14
问题内容

我有一个用Java编写的应用程序,我想知道到达之前需要花费多少时间,static void int main(String args)并且在那个阶段它正在做什么?

我知道微软有一个称为MPGO(经理配置文件指导的优化)的工具,是否有Java的等效工具?


问题答案:

一种从Java应用程序内部测量启动时间的简单方法:

import java.lang.management.ManagementFactory;

public class Test {

    public static void main(String[] args) {
        long currentTime = System.currentTimeMillis();
        long vmStartTime = ManagementFactory.getRuntimeMXBean().getStartTime();
        System.out.println(currentTime - vmStartTime);
    }
}

您可以使用JVMTI代理来跟踪VM事件,例如类加载,垃圾回收,方法编译等。这是我制作的一个简单代理-vmtrace(以及Windows
的编译dll)。

运行java -agentpath:path\to\vmtrace.dll Main,事件跟踪将打印到stderr

[0.00000] VMTrace started
[0.00182] Dynamic code generated: flush_icache_stub
[0.00187] Dynamic code generated: get_cpu_info_stub
[0.00519] Dynamic code generated: getCPUIDNameInfo_stub
[0.00524] Dynamic code generated: forward exception
[0.00526] Dynamic code generated: call_stub
...
[0.01182] Loading class: java/lang/Object
[0.01198] Loading class: java/lang/String
[0.01206] Loading class: java/io/Serializable
...
[0.05620] VM initialized
[0.05664] Class prepared: java/lang/invoke/MethodHandle
[0.05672] Loading class: java/lang/invoke/MethodHandleImpl
[0.05732] Class prepared: java/lang/invoke/MethodHandleImpl
[0.05738] Loading class: java/lang/invoke/MethodHandleImpl$1
[0.05743] Class prepared: java/lang/invoke/MethodHandleImpl$1
[0.05755] Loading class: java/lang/invoke/MethodHandleImpl$2
[0.05759] Loading class: java/util/function/Function
[0.05768] Class prepared: java/util/function/Function
...


 类似资料:
  • 启动时间测量 main函数执行之前 增加启动环境变量, 统计main函数启动前所使用的时长 Product -> Scheme -> Edit Scheme: Run -> Environment Variables下新增变量DYLD_PRINT_STATISTICS Value为 1 运行工程, 启动后, 控制台便可看到统计时间 main函数启动时间 在main函数中记录启动时间 在AppDel

  • 在JMH(Java微基准线束)中,我们可以使用 评估JVM预热后执行的平均时间。 我们也可以使用 估计执行的冷启动时间。但这只执行一次基准测试,这可能会引入偏差。那么,是否有任何方法可以评估JMH中冷启动的平均时间?

  • 问题内容: 有没有办法找出自JVM启动以来的时间? 当然,除了在的开始位置附近启动计时器外,因为在我的场景中,我正在编写库代码,并且要求在启动后立即调用某些东西的负担太重。 问题答案: 使用以下代码段: 要么: 这是检索JVM运行时间的 正确 方法。 有关更多信息,请参见http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/Run

  • 我正在一个非常低配置的机器上工作,其中JVM有时会崩溃。 java应用程序名为application。jar,从本地流媒体服务器播放高清视频。该应用程序运行在悬挂在Rest室中的嵌入式win7触摸计算机上。 当堆大小超过某一时间,并且错误内存不足时,JVM将关闭。 我想重新启动我的应用程序.jar每当JVM崩溃。 这是可能的。然后如何做到呢? 谢了。 编辑:使用尝试捕获进行包装不起作用,因为jvm

  • 我正在开发一个运行在PC上的Java测试控制器应用程序。它有: 在android手机上安装应用程序: 怎么做有什么想法吗?