Return-Path: Delivered-To: apmail-geronimo-scm-archive@www.apache.org Received: (qmail 52506 invoked from network); 30 Jul 2007 19:06:14 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 30 Jul 2007 19:06:14 -0000 Received: (qmail 15616 invoked by uid 500); 30 Jul 2007 19:05:51 -0000 Delivered-To: apmail-geronimo-scm-archive@geronimo.apache.org Received: (qmail 15549 invoked by uid 500); 30 Jul 2007 19:05:51 -0000 Mailing-List: contact scm-help@geronimo.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: dev@geronimo.apache.org List-Id: Delivered-To: mailing list scm@geronimo.apache.org Received: (qmail 15331 invoked by uid 99); 30 Jul 2007 19:05:50 -0000 Received: from Unknown (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 30 Jul 2007 12:05:49 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 30 Jul 2007 19:05:41 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 057491A981A; Mon, 30 Jul 2007 12:05:21 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r561094 - /geronimo/server/trunk/modules/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/JVMImpl.java Date: Mon, 30 Jul 2007 19:05:20 -0000 To: scm@geronimo.apache.org From: dwoods@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070730190521.057491A981A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: dwoods Date: Mon Jul 30 12:05:20 2007 New Revision: 561094 URL: http://svn.apache.org/viewvc?view=rev&rev=561094 Log: GERONIMO-2878 JVM stats exposed through JMX are incorrect Modified: geronimo/server/trunk/modules/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/JVMImpl.java Modified: geronimo/server/trunk/modules/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/JVMImpl.java URL: http://svn.apache.org/viewvc/geronimo/server/trunk/modules/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/JVMImpl.java?view=diff&rev=561094&r1=561093&r2=561094 ============================================================================== --- geronimo/server/trunk/modules/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/JVMImpl.java (original) +++ geronimo/server/trunk/modules/geronimo-j2ee/src/main/java/org/apache/geronimo/j2ee/management/impl/JVMImpl.java Mon Jul 30 12:05:20 2007 @@ -17,6 +17,10 @@ package org.apache.geronimo.j2ee.management.impl; +import java.lang.management.ManagementFactory; +import java.lang.management.MemoryMXBean; +import java.lang.management.MemoryUsage; +import java.lang.management.RuntimeMXBean; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Date; @@ -34,6 +38,7 @@ import org.apache.geronimo.management.StatisticsProvider; import org.apache.geronimo.management.geronimo.JVM; import org.apache.geronimo.management.stats.BoundedRangeStatisticImpl; +import org.apache.geronimo.management.stats.CountStatisticImpl; import org.apache.geronimo.management.stats.JVMStatsImpl; import org.apache.geronimo.system.logging.SystemLog; @@ -151,26 +156,38 @@ } public Stats getStats() { - BoundedRangeStatisticImpl heap; - if(stats == null) { + RuntimeMXBean runmxbean = ManagementFactory.getRuntimeMXBean(); + MemoryMXBean memmxbean = ManagementFactory.getMemoryMXBean(); + MemoryUsage memUsage = memmxbean.getHeapMemoryUsage(); + CountStatisticImpl upTime; + BoundedRangeStatisticImpl heapSize; + + if (stats == null) { stats = new JVMStatsImpl(); - long start = kernel.getBootTime().getTime(); - stats.getUpTimeImpl().setCount(start); - stats.getUpTimeImpl().setStartTime(start); - heap = stats.getHeapSizeImpl(); - heap.setStartTime(start); - heap.setBounds(0, runtime.totalMemory()); - heap.setCurrent(heap.getUpperBound() - runtime.freeMemory()); - heap.setLowWaterMark(heap.getCurrent()); - heap.setHighWaterMark(heap.getCurrent()); + // setup UpTime CountStatistic + upTime = stats.getUpTimeImpl(); + upTime.setStartTime(runmxbean.getStartTime()); + upTime.setCount(runmxbean.getUptime()); + // setup Heap BoundedRangeStatistic + heapSize = stats.getHeapSizeImpl(); + heapSize.setStartTime(runmxbean.getStartTime()); + heapSize.setBounds(0, memUsage.getMax()); + heapSize.setCurrent(memUsage.getUsed()); + heapSize.setLowWaterMark(memUsage.getUsed()); + heapSize.setHighWaterMark(memUsage.getUsed()); } else { - heap = stats.getHeapSizeImpl(); - heap.setBounds(0, runtime.totalMemory()); - heap.setCurrent(heap.getUpperBound() - runtime.freeMemory()); - } - long now = System.currentTimeMillis(); - stats.getUpTimeImpl().setLastSampleTime(now); - heap.setLastSampleTime(now); + // update UpTime CountStatistic + upTime = stats.getUpTimeImpl(); + upTime.setCount(runmxbean.getUptime()); + // update Heap BoundedRangeStatistic + heapSize = stats.getHeapSizeImpl(); + heapSize.setBounds(0, memUsage.getMax()); + heapSize.setCurrent(memUsage.getUsed()); + } + long now = upTime.getStartTime() + upTime.getCount(); + upTime.setLastSampleTime(now); + heapSize.setLastSampleTime(now); + return stats; }