[freenet-cvs] r11904 - trunk/freenet/src/freenet/node

nextgens at freenetproject.org nextgens at freenetproject.org
Sat Feb 24 14:44:12 UTC 2007


Author: nextgens
Date: 2007-02-24 14:44:10 +0000 (Sat, 24 Feb 2007)
New Revision: 11904

Modified:
   trunk/freenet/src/freenet/node/TextModeClientInterface.java
Log:
Implement #1166: display memory stats on TCMI

Modified: trunk/freenet/src/freenet/node/TextModeClientInterface.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterface.java	2007-02-23 20:30:06 UTC (rev 11903)
+++ trunk/freenet/src/freenet/node/TextModeClientInterface.java	2007-02-24 14:44:10 UTC (rev 11904)
@@ -16,6 +16,7 @@
 import java.net.SocketException;
 import java.net.URL;
 import java.net.URLConnection;
+import java.text.NumberFormat;
 import java.util.HashMap;
 import java.util.Hashtable;
 
@@ -36,6 +37,7 @@
 import freenet.support.HexUtil;
 import freenet.support.Logger;
 import freenet.support.SimpleFieldSet;
+import freenet.support.SizeUtil;
 import freenet.support.api.Bucket;
 import freenet.support.io.ArrayBucket;
 import freenet.support.io.BucketTools;
@@ -170,6 +172,7 @@
 //        sb.append("SUBFILE:<filename> - append all data received from subscriptions to a file, rather than sending it to stdout.\r\n");
 //        sb.append("SAY:<text> - send text to the last created/pushed stream\r\n");
         sb.append("STATUS - display some status information on the node including its reference and connections.\r\n");
+        sb.append("MEMSTAT - display some memory usage related informations.\r\n");
         sb.append("SHUTDOWN - exit the program\r\n");
         if(n.isUsingWrapper())
         	sb.append("RESTART - restart the program\r\n");
@@ -368,6 +371,36 @@
 		out.write(sb.toString().getBytes());
 		out.flush();
 		return true;
+        } else if(uline.startsWith("MEMSTAT")) {
+		Runtime rt = Runtime.getRuntime();
+		float freeMemory = (float) rt.freeMemory();
+		float totalMemory = (float) rt.totalMemory();
+		float maxMemory = (float) rt.maxMemory();
+
+		long usedJavaMem = (long)(totalMemory - freeMemory);
+		long allocatedJavaMem = (long)totalMemory;
+		long maxJavaMem = (long)maxMemory;
+		int availableCpus = rt.availableProcessors();
+		NumberFormat thousendPoint = NumberFormat.getInstance();
+
+		ThreadGroup tg = Thread.currentThread().getThreadGroup();
+		while(tg.getParent() != null) tg = tg.getParent();
+		int threadCount = tg.activeCount();
+
+		StringBuffer sb = new StringBuffer();
+		sb.append("Used Java memory:\u00a0" + SizeUtil.formatSize(usedJavaMem, true)+"\r\n");
+		sb.append("Allocated Java memory:\u00a0" + SizeUtil.formatSize(allocatedJavaMem, true)+"\r\n");
+		sb.append("Maximum Java memory:\u00a0" + SizeUtil.formatSize(maxJavaMem, true)+"\r\n");
+		sb.append("Running threads:\u00a0" + thousendPoint.format(threadCount)+"\r\n");
+		sb.append("Available CPUs:\u00a0" + availableCpus+"\r\n");
+		sb.append("JVM Vendor:\u00a0" + System.getProperty("java.vm.vendor")+"\r\n");
+		sb.append("JVM Version:\u00a0" + System.getProperty("java.vm.version")+"\r\n");
+		sb.append("OS Name:\u00a0" + System.getProperty("os.name")+"\r\n");
+		sb.append("OS Version:\u00a0" + System.getProperty("os.version")+"\r\n");
+		sb.append("OS Architecture:\u00a0" + System.getProperty("os.arch")+"\r\n");
+		out.write(sb.toString().getBytes());
+		out.flush();
+		return false;
 	} else if(uline.startsWith("HELP")) {
 		printHeader(out);
 		outsb.append("\r\n");




More information about the cvs mailing list