Hi,

Suggested patch for bug 6523160 :RuntimeMXBean.getUptime() returns
negative values. No unit test unfortunately, works on my Kubuntu Linux
though. Diff created against svn revision 235.

Cheers,
Lars
--- origjdk/jdk/trunk/j2se/src/share/classes/sun/management/RuntimeImpl.java	2007-05-16 21:06:59.000000000 +0200
+++ jdk/trunk/j2se/src/share/classes/sun/management/RuntimeImpl.java	2007-05-17 01:37:58.000000000 +0200
@@ -32,6 +32,7 @@
 import java.util.Map;
 import java.util.Set;
 import java.util.Properties;
+import java.util.concurrent.TimeUnit;
 import javax.management.openmbean.CompositeData;
 import javax.management.openmbean.CompositeDataSupport;
 import javax.management.openmbean.CompositeType;
@@ -50,6 +51,7 @@
 
     private final VMManagement jvm;
     private final long vmStartupTime;
+    private final long nanoStartup;
 
     /**
      * Constructor of RuntimeImpl class.
@@ -57,6 +59,7 @@
     RuntimeImpl(VMManagement vm) {
         this.jvm = vm;
         this.vmStartupTime = jvm.getStartupTime();
+        this.nanoStartup = System.nanoTime();
     }
 
     public String getName() {
@@ -114,12 +117,12 @@
     }
 
     public long getUptime() {       
-        long current = System.currentTimeMillis();
-
+        long diff = System.nanoTime() - nanoStartup;
+	
         // TODO: If called from client side when we support
         // MBean proxy to read performance counters from shared memory, 
         // need to check if the monitored VM exitd.
-        return (current - vmStartupTime);
+        return TimeUnit.NANOSECONDS.toMillis(diff);
     }
 
     public long getStartTime() {

Reply via email to