自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时间值。