自JVM启动以来的时间

有没有办法找出自JVM启动以来的时间?

当然,除了在main的开始附近启动一个计时器,因为在我的场景中,我正在编写库代码,而且在启动后立即调用某些东西的要求太麻烦了。

使用这个片段:

 long jvmUpTime = ManagementFactory.getRuntimeMXBean().getUptime(); 

要么:

 long jvmStartTime = ManagementFactory.getRuntimeMXBean().getStartTime(); 

这是检索JVM正常运行的正确方法。

有关更多信息,请参阅http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/RuntimeMXBean.html

您可以通过以下代码获取JVM的启动时间:

 import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; ... RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean(); long uptimeInMillis = runtimeMXBean.getUptime(); 

请参阅http://java.sun.com/javase/6/docs/api/java/lang/management/RuntimeMXBean.html

从Java 5开始,您可以使用JMX来查找。 选中“ 使用平台MBeanserver ”以了解更多详细信息。 你正在寻找的bean是名为“java.lang:type = Runtime”的bean。 StartTime属性为您提供启动JVM的时间,Uptime属性告诉您JVM的正常运行时间。

您可以通过执行以下代码来获得对运行时bean的引用: ManagementFactory.getRuntimeMXBean();

如果你的jvm程序在linux下运行,可以查看startTime的使用ps

 ps -p <pid> -o stime,etime 

也许值得一提的是,如果您不想编写任何代码,请从java bin目录运行jconsole,然后单击VM Summary,然后查看Uptime和Process CPU时间值。