Revision: 5645
          http://jnode.svn.sourceforge.net/jnode/?rev=5645&view=rev
Author:   fduminy
Date:     2009-08-15 16:35:50 +0000 (Sat, 15 Aug 2009)

Log Message:
-----------
improvements of the onheap command :
- replaced HeapStatistics#toString() by HeapStatistics#writeTo(Appendable) for 
better genericity
- added BufferedWriter to the output stream for better performances (it's about 
2 times faster with a 2Kb buffer)

Modified Paths:
--------------
    trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java
    trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java
    trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java

Modified: trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java
===================================================================
--- trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java  
2009-08-15 16:23:23 UTC (rev 5644)
+++ trunk/cli/src/commands/org/jnode/command/system/OnHeapCommand.java  
2009-08-15 16:35:50 UTC (rev 5645)
@@ -20,6 +20,7 @@
  
 package org.jnode.command.system;
 
+import java.io.BufferedWriter;
 import java.io.PrintWriter;
 
 import org.jnode.shell.AbstractCommand;
@@ -69,7 +70,7 @@
             stats.setMinimumTotalSize(argMinTotalSize.getValue());
         }
 
-        out.println(stats.toString());
+        stats.writeTo(new BufferedWriter(getOutput().getWriter(), 2048));
     }
 
 }

Modified: trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java
===================================================================
--- trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java 2009-08-15 
16:23:23 UTC (rev 5644)
+++ trunk/core/src/core/org/jnode/vm/memmgr/HeapStatistics.java 2009-08-15 
16:35:50 UTC (rev 5645)
@@ -20,6 +20,8 @@
  
 package org.jnode.vm.memmgr;
 
+import java.io.IOException;
+
 import org.jnode.vm.VmSystemObject;
 
 /**
@@ -46,9 +48,10 @@
     public abstract void setMinimumTotalSize(long bytes);
 
     /**
-     * Convert the statistical data to a string.
-     *
-     * @see java.lang.Object#toString()
+     * Write the statistical data to an {...@link Appendable}.
+     * 
+     * @param a
+     * @throws IOException 
      */
-    public abstract String toString();
+    public abstract void writeTo(Appendable a) throws IOException;
 }

Modified: trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java
===================================================================
--- trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java  
2009-08-15 16:23:23 UTC (rev 5644)
+++ trunk/core/src/core/org/jnode/vm/memmgr/def/DefHeapStatistics.java  
2009-08-15 16:35:50 UTC (rev 5645)
@@ -20,6 +20,7 @@
  
 package org.jnode.vm.memmgr.def;
 
+import java.io.IOException;
 import java.util.TreeMap;
 
 import org.jnode.util.NumberUtils;
@@ -74,8 +75,11 @@
         this.minTotalSize = bytes;
     }
 
-    public String toString() {
-        final StringBuilder sb = new StringBuilder();
+    /**
+     * {...@inheritdoc}
+     * @throws IOException 
+     */
+    public void writeTo(Appendable a) throws IOException {
         boolean first = true;
 
         for (HeapCounter c : countData.values()) {
@@ -83,15 +87,13 @@
                 if (first) {
                     first = false;
                 } else {
-                    sb.append(newline);
+                    a.append(newline);
                 }
-                c.append(sb);
+                c.append(a);
             }
         }
-
-        return sb.toString();
     }
-
+    
     static final class HeapCounter {
 
         private final String name;
@@ -122,18 +124,19 @@
             return objectSize * (long) instanceCount;
         }
 
-        public void append(StringBuilder sb) {
-            sb.append(name);
-            sb.append("  #");
-            sb.append(instanceCount);
+        public void append(Appendable a) throws IOException {
+            a.append(name);
+            a.append("  #");
+            a.append(Integer.toString(instanceCount));
 
             if (objectSize != 0) {
-                sb.append(usage);
+                a.append(usage);
                 long size = getTotalSize();
                 if (size >= 1024) {
-                    sb.append(NumberUtils.size(size) + " (" + getTotalSize() + 
"b)");
+                    a.append(NumberUtils.toBinaryByte(size)).append(" (");
+                    a.append(Long.toString(size)).append("b)");
                 } else {
-                    sb.append(size + "b");
+                    a.append(Long.toString(size)).append('b');
                 }
             }
         }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Jnode-svn-commits mailing list
Jnode-svn-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jnode-svn-commits

Reply via email to