001    package org.shiftone.jrat.core.jmx.info;
002    
003    
004    import org.shiftone.jrat.util.VersionUtil;
005    import org.shiftone.jrat.util.log.Logger;
006    
007    import java.lang.reflect.Method;
008    
009    
010    /**
011     * @author jeff@shiftone.org (Jeff Drost)
012     */
013    public class JRatInfo implements JRatInfoMBean {
014    
015        private static final Logger LOG = Logger.getLogger(JRatInfo.class);
016    
017        public String getBuiltBy() {
018            return VersionUtil.getBuiltBy();
019        }
020    
021    
022        public String getBuiltOn() {
023            return VersionUtil.getBuiltOn();
024        }
025    
026    
027        public String getVersion() {
028            return VersionUtil.getVersion();
029        }
030    
031    
032        public long getTotalMemory() {
033            return Runtime.getRuntime().totalMemory();
034        }
035    
036    
037        public long getMaxMemory() {
038    
039            try {
040                Method maxMemory = Runtime.class.getMethod("maxMemory", new Class[]{});
041                Long result = (Long) maxMemory.invoke(Runtime.getRuntime(), new Object[]{});
042    
043                return result.longValue();
044            }
045            catch (Exception e) {
046            }
047    
048            return 0;
049        }
050    
051    
052        public long getFreeMemory() {
053            return Runtime.getRuntime().freeMemory();
054        }
055    
056    
057        public int getActiveThreadCount() {
058            return Thread.activeCount();
059        }
060    
061    
062        public void gc() {
063            Runtime.getRuntime().gc();
064        }
065    }