<!--
  NOTE: This copyright does *not* cover user programs that use HQ
  program services by normal system calls through the application
  program interfaces provided as part of the Hyperic Plug-in Development
  Kit or the Hyperic Client Development Kit - this is merely considered
  normal use of the program, and does *not* fall under the heading of
  "derived work".
  
  Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
  This file is part of HQ.
  
  HQ is free software; you can redistribute it and/or modify
  it under the terms version 2 of the GNU General Public License as
  published by the Free Software Foundation. This program is distributed
  in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
  even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  PARTICULAR PURPOSE. See the GNU General Public License for more
  details.
  
  You should have received a copy of the GNU General Public License
  along with this program; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
  USA.
 -->

<service name="JVM">

  <property name="OBJECT_NAME"
            value="java.lang:type=Runtime"/>

  <filter name="template"
          value="${OBJECT_NAME}:${alias}"/>

  <filter name="classloading"
          value="java.lang:type=ClassLoading:${alias}"/>

  <filter name="threading"
          value="java.lang:type=Threading:${alias}"/>

  <filter name="memory"
          value="java.lang:type=Memory"/>

  <plugin type="measurement"
          class="org.hyperic.hq.product.jmx.MxMeasurementPlugin"/>

  <plugin type="control"
          class="org.hyperic.hq.product.jmx.MxControlPlugin"/>

  <plugin type="autoinventory"/>

  <actions include="gc"/>

  <property name="OBJECT_NAME.gc" value="${memory}"/>

  <properties>
    <property name="VmVersion" description="Vm Version"/>
    <property name="VmVendor" description="Vm Vendor"/>
    <property name="VmName" description="Vm Name"/>
  </properties>

  <metric name="Availability"
          indicator="true"/>

  <metric name="Uptime"
          units="ms"
          collectionType="static"
          category="AVAILABILITY"/>

  <metric name="Object Pending Finalization Count"
          template="${memory}:${alias}"/>

  <metric name="Heap Memory Used"
          units="B"
          indicator="true"
          template="${memory}:Composite.HeapMemoryUsage.used"/>

  <metric name="Heap Memory Committed"
          units="B"
          template="${memory}:Composite.HeapMemoryUsage.committed"/>

  <metric name="Heap Memory Free"
          units="B"
          template="${memory}:Composite.HeapMemoryUsage.free"/>

  <metric name="Heap Memory Max"
          units="B"
          collectionType="static"
          template="${memory}:Composite.HeapMemoryUsage.max"/>

  <metric name="Total HotSpot Compilation Time"
          units="ms"
          category="PERFORMANCE"
          template="java.lang:type=Compilation:TotalCompilationTime"/>

  <metric name="Loaded Classes"
          alias="TotalLoadedClassCount"
          collectionType="trendsup"
          template="${classloading}"
          indicator="true"/>

  <metric name="Current Loaded Classes"
          alias="LoadedClassCount"
          template="${classloading}"/>

  <metric name="Unloaded Classes"
          alias="UnloadedClassCount"
          collectionType="trendsup"
          template="${classloading}"/>

  <metric name="Thread Count"
          indicator="true"
          template="${threading}"/>

  <metric name="Daemon Thread Count"
          template="${threading}"/>

</service>
