gpt4 book ai didi

java - 我如何测量 JVM 启动时间?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:16:00 24 4
gpt4 key购买 nike

我有一个用 java 编写的应用程序,我想知道在到达 static void int main(String args) 之前需要多少时间,以及它在那个阶段做了什么,我该如何实现?

我知道微软有一个名为 MPGO(Manager profile guided optimisation)的工具,是否有 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 agent用于跟踪 VM 事件,如类加载、垃圾收集、方法编译等。这是我制作的一个简单代理 - vmtrace (以及 Windows 的 compiled 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
...

关于java - 我如何测量 JVM 启动时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39321345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com